在C#中可以这样写东西:
Instrument instr = new Instrument { ClassCode = "Hello", Ticker = "World" };
Run Code Online (Sandbox Code Playgroud)
但是要做到这一点,你必须set;在相应的类中添加:
class Instrument
{
public string ClassCode { get; set; }
public string Ticker { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这意味着以后有人可能会意外地改变价值:
instr.ClassCode.set = "Destroy"
Run Code Online (Sandbox Code Playgroud)
我不想允许这样做.即,从一方面我想要一个只读属性,从另一只手我想创建这样的对象:
Instrument instr = new Instrument { ClassCode = "Hello", Ticker = "World" };
Run Code Online (Sandbox Code Playgroud)
我不确定这是否可行.可能我应该使用字段或其他东西而不是属性.我只想拥有最后一句的语法,但同时保持readonly.
upd:简而言之,不允许以任何方式使用readonly属性.在这种情况下应该使用常规构造函数和"get".
我将通过使用私有setter并从构造函数中调用它来实现此目的.这样您就可以控制何时调用setter.
Instrument instr = new Instrument("Hello", "World");
class Instrument
{
public Instrument(string ClassCode, string Ticker)
{
this.ClassCode = ClassCode;
this.Ticker = Ticker;
}
public string ClassCode { get; private set; }
public string Ticker { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |