[英]creating indexer for a class with more than one array?
因此,我正在阅读有关索引器的信息,并且基本上理解,如果您有一个带有数组的类,则可以使用索引器来获取和设置该数组中的值。 但是,如果您的班级中有多个数组怎么办?
例如:
class myClass
{
string[] myArray1 = {"joe","zac","lisa"}
string[] myArray2 = {"street1","street2","street3"}
}
我想同时为myArray1和myArray2建立索引器...我该怎么做?
基本上你不能。 好吧,您可能会使索引超载,例如使一个采用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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.