我需要进行健全性检查以确定我的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可能会发生什么?
答案 0 :(得分:0)
您是否尝试过一个全新的项目? 您是否清理了解决方案(Build&gt; Clean Solution),关闭所有打开的文档/选项卡,然后进行重建(不是构建,重建!)并再试一次?
答案 1 :(得分:-2)
我确定这是由两个PostSharp方面属性之间的冲突引起的。 PostSharp不是问题,但是我创建了一个自定义属性来拦截属性赋值。删除额外属性使其正常工作。
基本上,当有多个方面应用于同一个对象时,PostSharp在“编织”生成的代码时会做一些棘手的操作。仍然试图确定如何解决它,但至少我不会完全疯了。