クラスは参照型ですが、構造体は値型です。基本的にクラスであるときに、型のStringに対してrefを使用する必要があるのはなぜですか?
これは、クラスのタイプであるすべてのパラメータに対してrefを明示的に指定する必要はないことを意味します。
私の質問は、私たちは基本的にクラスの型である文字列型のため、REFキーワードを指定しなければならないのはなぜ
のですか?
文字列に固有ではありません
public partial class StringManupulation : Form
{
public StringManupulation()
{
InitializeComponent();
String value = "Hello ";
Concatenate(value);
MessageBox.Show(value);
Concatenate(ref value);
MessageBox.Show(value);
}
/// <summary>
/// Does not work
/// </summary>
/// <param name="value"></param>
public void Concatenate(String value)
{
value = string.Concat(value, "StackOverflow");
}
/// <summary>
/// Works!
/// </summary>
/// <param name="value"></param>
public void Concatenate(ref String value)
{
value = string.Concat(value, "StackOverflow");
}
}
System.Stringは不変であるためです。 – adatapost