我需要进行完整性检查以确定我的 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 会发生什么?