在c#中使用[]接口(而不是来自ILIst)构建对象

Joh*_*ult 2 c#

我想传递一个总是已知大小的数组中的一些值.我想定义一个表示这个十进制值数组的类,它不能调整大小,总是具有相同数量的元素,并支持[]数组表示法.

在c ++中,我可以为此执行运算符重载 - 但我无法在c#中看到如何执行此操作

要清楚 - 类的使用将是这样的:

MyValues values = new MyValues;
values[3] = 14;
values[7] = 10
Run Code Online (Sandbox Code Playgroud)

.... 然后

decimal aValue = values[2];
Run Code Online (Sandbox Code Playgroud)

建议?

SLa*_*aks 13

你需要编写一个索引器,如下所示:

public decimal this[int index] {
    get { return data[index]; }
    set { data[index] = value; }
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*Two 5

使用索引器

public class MyValues {
    private readonly decimal[] numbers = new decimal[10];

    public decimal this[int index] {
        get { return numbers[index]; }
        set { numbers[index] = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能希望添加一些边界检查以提供更好的故障消息.您可能也不想硬编码数组大小.