繁体   English   中英

C#:数组属性的getter和setter表达式

[英]C#: Getter and setter expression for array property

如何在类CoolerSystem编写数组属性CoolerFanIsOn的getter和setter表达式? 我展示了Lamp类的非数组属性IsOn的类似所需表达式。

class CoolerFan{

    bool isOn;
    public bool IsOn {
        get => isOn;
        set {
            isOn = value;
        }
    }
}

class CoolerSystem {

    private CoolerFan[] = new CoolerFan[5];
    private bool[] coolerFanIsOn = new Boolean[5];

    // invalid code from now

    public bool[] CoolerFanIsOn {
        get => coolerFanIsOn[number];
        set {
            coolerFanIsOn[number] = value;
        }
    }
}

你可以使用索引器

public class CoolerSystem
{
    private bool[] _coolerFanIsOn = new Boolean[5];

    public bool this[int index]
    {
        get => _coolerFanIsOn[index];
        set => _coolerFanIsOn[index] = value;
    }
}

顺便说一句, =>表达体性质 ,这是C#6中的新特性 如果你不能使用(setter在C#7中是新的)使用旧的语法,索引器与它无关(C#3):

public bool this[int index]
{
    get { return _coolerFanIsOn[index];  }
    set { _coolerFanIsOn[index] = value; }
}

您可以为您的班级编写索引器

public bool this[int index]{
   get { return coolerFanIsOn[index]; }
   set { coolerFanIsOn[index] = value;}
}

也许这就是你想做的事情:

class CoolerSystem
{

    private CoolerFan[] _fans = new CoolerFan[5];

    private bool[] _coolerfanIsOn;

    public bool[] CoolerFanIsOn
    {
        get { return _coolerfanIsOn; }
        set
        {
            _coolerfanIsOn = value;
        }
    }

    public bool GetFanState(int number)
    {
        return CoolerFanIsOn[number];
    }

    public void SetFanState(int number, bool value)
    {
        CoolerFanIsOn[number] = value;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM