我在C#中指定一个公共属性,如下所示:
public bool SuezCanalTransversal {get; set;}
但是,似乎没有创建私有成员变量。例如,如果我覆盖了get,return _suezCanalTransversal;
我看到了:
"_suezCanalTransversal does not exist in the current context"
。
简单地添加相关的私有成员变量是没有问题的,但我的印象是现在已经自动完成了。
几个问题:
何时为公共属性自动生成私有成员变量,何时不是?
当使用public bool SuezCanalTransversal{ get; set;}
等公共属性时,假设私有变量是否正确:private bool _suezCanalTransversal
是否会被创建?
答案 0 :(得分:7)
编译器生成支持变量,您不能依赖用于命名该支持变量的任何命名约定或模式。
支持变量仅在编译时声明,因此您无法在源代码中访问它。
如果您想要访问支持变量,那么只有一个解决方案:不要使用自动属性,而是声明属性'old skool',如下所示:
private int _suezCanalTransversal;
public int SuezCanalTransversal
{
{ get return _suezCanalTransversal; }
{ set _suezCanalTransversal = value; }
}