相关疑难解决方法(0)

是否可以访问自动实现属性背后的支持字段?

我知道我可以使用详细的属性语法:

private string _postalCode;

public string PostalCode
{
    get { return _postalCode; }
    set { _postalCode = value; }
}
Run Code Online (Sandbox Code Playgroud)

或者我可以使用自动实现的属性.

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

我可以以某种方式访问​​自动实现属性后面的支持字段吗?(在这个例子中,它将是_ postalCode).


编辑:我的问题不是关于设计,而是关于,比方说,理论能力.

c#

55
推荐指数
5
解决办法
2万
查看次数

省略的二传手与私人二传手?

具有省略的setter的属性与具有private setter的属性之间有什么区别?

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

VS

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

c# c#-6.0

38
推荐指数
4
解决办法
5840
查看次数

是否可以强制自动属性使用只读后备字段?

我的项目包含大量具有属性的类,其后备字段标记为只读,因为它们仅在构造时设置.作为一种风格问题,我喜欢使用自动属性,因为它消除了大量的样板代码,并鼓励使用属性成员而不是支持字段.但是,当使用自动属性时,我失去了我的支持字段的"readonly-ness".我知道当字段以这种方式标记时,编译器/运行时能够利用一些性能增强,所以我希望能够将我的auto-property标记为readonly,如下所示:

[ReadOnly]
public string LastName { get; }
Run Code Online (Sandbox Code Playgroud)

而不是

private readonly string _LastName;
public string LastName 
{ 
    get
    { 
        return _LastName;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一些机制可以做到这一点?如果没有,自定义支持字段的性能增益是否真的值得?

我认为,将该字段公开为公共是另一种选择,以这种方式公开字段似乎是错误的.即

public readonly string LastName;
Run Code Online (Sandbox Code Playgroud)

.net c#

12
推荐指数
2
解决办法
2351
查看次数

标签 统计

c# ×3

.net ×1

c#-6.0 ×1