只能在创建对象时分配的类属性?

jav*_*red 3 c#

在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".

rec*_*ive 7

我将通过使用私有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)