C# コンパイラが壊れているかどうか、または自動プロパティがどのように機能するかを理解していないかどうかを判断するために、サニティ チェックが必要です。
次のクラス定義とコンストラクターが与えられた場合、それぞれのメンバー値に注意してください。
public class MyClass
{
public string MyString { get; set; }
public string _anotherString;
public MyClass()
{
MyString = "some value";
// <--- debugger shows MyString as null
_anotherString = "another value";
// <--- debugger shows _anotherString as "another value"
}
}
これは、さまざまなクラスで引き続き発生します。つまり、コンストラクターで値を割り当てるときに、すべての自動プロパティが初期化に失敗します。彼らは他のどこでも働いています。ただし、バッキング ストアを使用するように変更し、バッキング変数を初期化すると、適切に初期化されます。
コンストラクターで自動プロパティを初期化することは常に安全であると仮定するのは正しいですか、それとも何か不足していますか? もしそうなら、Visual Studio で何が起こっているのでしょうか?