为具有多个数组的类创建索引器?

时间:2015-03-05 20:36:52

标签: c#

所以我正在阅读索引器并且基本上理解如果你有一个包含数组的类,你可以使用索引器来获取和设置该数组中的值。 但是,如果你的课程中有多个数组呢?

例如:

class myClass
{
     string[] myArray1 = {"joe","zac","lisa"}
     string[] myArray2 = {"street1","street2","street3"}
}

我希望myArray1和myArray2都有一个索引器...... 我怎么能这样做?

1 个答案:

答案 0 :(得分:8)

基本上,你不能。好吧,你可以重载索引,例如一个取long索引和一个取int索引,但这不太可能是一个好主意,并可能导致严重对你维护代码之后来的人表示不满。

更可能有用的是公开普通属性,它包装数组(并且可能只提供只读访问)。在某些情况下,您可以使用ReadOnlyCollection<T>

public class Foo
{
    private readonly string[] names;
    private readonly string[] addresses;

    // Assuming you're using C# 6...
    private readonly ReadOnlyCollection<string> Names { get; }
    private readonly ReadOnlyCollection<string> Addresses { get; }

    public Foo()
    {
        names = ...;
        addresses = ...;
        Names = new ReadOnlyCollection<string>(names);
        Addresses = new ReadOnlyCollection<string>(addresses);
    }
}