C#属性定义

Sun*_*nny 1 c#

对于C#属性,我可以这样做:

public class Employee{

 public string Name { get; private set; }

 public Employee(string name){
  Name = name;
 }

}
Run Code Online (Sandbox Code Playgroud)

这意味着Name属性可以在Employee类中设置并且可以公开读取.

但是,如果我想将集合限制在Employee类的构造函数中,我需要做:

public class Employee{
 public readonly string Name = String.Empty;
 public Employee(string name){
  Name = name;
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,对于这种情况,我不得不将属性更改为字段.

是否有任何理由在C#中不可能/允许:

public class Employee{
 public string Name { get; private readonly set; }
 public Employee(string name){
  Name = name;
 }
}
Run Code Online (Sandbox Code Playgroud)

IMO这将允许我们拥有只能在构造函数中设置的属性,并且不需要我们将属性更改为字段...

谢谢!

Dan*_*vil 7

使用

private readonly string name = Empty.String;
public string Name { get { return name; } }
Run Code Online (Sandbox Code Playgroud)