次の動作のC#言語仕様とは何ですか。属性の値は保持されますが、新しいインスタンス(nullまたは新しいオブジェクト)は実際のパラメーターに更新されません。それが指すオブジェクトを変更することを除いて、基本的にはrefとして機能します。
main関数のオブジェクトはそのまま(nullではない)のままですが、文字列属性は「HelloWorld」に変更されています
class Program
{
class MyClass
{
public string str;
}
static void MyMethod(MyClass obj)
{
obj.str = "Hello World";
obj = null;
}
static void Main(string[] args)
{
MyClass o = new MyClass();
o.str = "Hello";
Console.WriteLine(o.str);
MyMethod(o);
Console.WriteLine(o.str); // prints "Hello World"
}
}