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

Dou*_*zey 1 c# properties

我在C#中指定一个公共属性,如下所示:

public bool SuezCanalTransversal {get; set;}
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有创建私有成员变量.例如,如果我覆盖get,return _suezCanalTransversal;我看到:

"_suezCanalTransversal does not exist in the current context".

简单地添加相关的私有成员变量是没有问题的,但我的印象是现在已经自动完成了.

几个问题:

何时为公共属性自动生成私有成员变量,何时不是?

当使用诸如public bool SuezCanalTransversal{ get; set;}使用的公共属性时,假设私有变量是否正确:private bool _suezCanalTransversal将被创建?

Fre*_*els 7

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

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

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

private int _suezCanalTransversal;

public int SuezCanalTransversal
{
   { get return _suezCanalTransversal; }
   { set _suezCanalTransversal = value; }
}
Run Code Online (Sandbox Code Playgroud)