修改get accessor c#

Wil*_*oso 0 c# get accessor set

在不使用速记的情况下使用访问器相当新颖.我正在尝试基于另一个属性更改属性,而不能将其设置在其他位置.基本上我想拥有它;

public int Salary { get; set; }
public int Tax
{
    get
    {
        if (Salary > 2000)
        {
            return Tax = 20;
        }
        else if (Salary > 1500)
        {
            return Tax = 10;
        }
        else
        {
            return Tax = 5;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,不可能能够更改Tax属性本身,但是我得到一个错误,说"Property Customer.Tax无法分配给它,因为它是readonly"而且我理解这个问题,但我不知道如何解决这个问题.

15e*_*153 5

这是一个吸气剂.您没有在getter中设置值.如果您使用它来设置值,那么它将是一个setter.getter只是获得一个值.Tax"拥有" 的唯一值是getter返回的任何值.

public int Tax
{
    get
    {
        if (Salary > 2000)
        {
            return 20;
        }
        else if (Salary > 1500)
        {
            return 10;
        }
        else
        {
            return 5;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果祖母有轮子,她就是火车.如果你只是制定一个"永远不会在吸气器中设置任何东西"的规则,那么你生活中的不确定性会得到很好的解决.

唯一的例外是为readonly属性初始化一个私有支持字段,该属性返回一个只需要初始化一次的昂贵对象:

private ReadOnlyCollection<String> _states;
public ReadOnlyCollection<String> States; {
    get { 
        if (_states == null) {
            _states = new ReadOnlyCollection(DB.GetStates().ToList());
        }
        return _states;
    }
 }
Run Code Online (Sandbox Code Playgroud)