使用get和set时,我是否可以访问C#中的变量?

Sam*_*tar 0 c#

当我在课堂上做以下事情时:

public string ModifiedBy { get; set; }
Run Code Online (Sandbox Code Playgroud)

C#如何存储数据.编译器是否生成支持变量,它是如何命名的,如果不使用get,我是否可以访问它; 组?

jef*_*ora 7

是的,编译器生成一个支持字段.

不,您无法在编译时访问它.

是的,您可以通过反射在运行时访问它.

不,你不应该.


不出所料,访问属性的支持字段的最简单方法是实现具有支持字段的属性:

private int _myInt;
public int MyInt {
    get { return _myInt; }
    set { _myInt = value; }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要自动实现属性的简易性,但不希望每个人都能够更改其值,则可能适合将访问修饰符限制为其中的一个或其他部分,即

public int MyInt { get; private set; } // or protected set etc
Run Code Online (Sandbox Code Playgroud)