在什么情况下,没有为C#中的公共属性生成私有变量?

时间:2017-08-27 19:40:33

标签: c# properties

我在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是否会被创建?

1 个答案:

答案 0 :(得分:7)

编译器生成支持变量,您不能依赖用于命名该支持变量的任何命名约定或模式。

支持变量仅在编译时声明,因此您无法在源代码中访问它。

如果您想要访问支持变量,那么只有一个解决方案:不要使用自动属性,而是声明属性'old skool',如下所示:

private int _suezCanalTransversal;

public int SuezCanalTransversal
{
   { get return _suezCanalTransversal; }
   { set _suezCanalTransversal = value; }
}