【发布时间】:2013-10-13 00:04:33
【问题描述】:
我需要进行完整性检查以确定我的 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 会发生什么?
【问题讨论】:
-
您是第一次在行
MyString = ...还是在下一行?您的评论建议在下一行,但您不能在评论上设置断点。 -
除了使用调试器之外,你能显示输出吗?即
Console.WriteLine或MessageBox.Show(...)等。不用说,自动属性不会按照您描述的方式运行。 -
@siride: 谁调试调试器...?
-
@CSJ 这是我不想考虑的那些可怕的问题之一 ;)。
-
这很奇怪。正如@KirkWoll 所指出的,您描述的行为不是应该的。我猜是过时的 pdb 或配置问题的一些问题。
标签: c# visual-studio postsharp automatic-properties