C#类数组和索引器,一个类中的多个数组必须公开吗?

时间:2011-05-25 08:36:57

标签: c# arrays properties

我有一个类可以容纳3个并行数组。 (对于类赋值,我们基本上编写了一个基本的xml解析器......开始编程类)

*注意,我在非常基本的OOP中这样做。我有一个XMLObject类,它有数组,并将xml元素保存在一个数组中,数据值保存在另一个数组中,结束元素保存在第三个数组中。我还有一个XMLParse对象来执行实际的解析,并在找到它们时将字符串存储到各种数组中。我一直禁止使用.net的xml内容进行此分配,必须逐字节读入。

现在我在MSDN上阅读关于索引器的内容,据我了解,我可以使用索引器只有一个数组(因为这是属性接收参数的唯一方法),或者我必须公开我的数组解析类可以添加它们,主类或其他类可以从中读取它们。

我是否有这个权利,或者我错过了什么/不理解如何从另一个类中获取和设置一个类的数组?

同样适用于列表吗?

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你想在你的类上有很多索引器,它将返回类所持有的数组中的各种元素。

您可以拥有多个索引器,但前提是每个索引器使用的类型不同。因此,int可以有一个索引器,而string可以有一个索引器,而int则不能有两个索引器。

根据事物的声音,您将无法使用索引器访问您的类所拥有的所有值,因为他们可能都想使用int

公开公开数组是一种选择,但您也可以提供不同的方法来阅读每个内容,因此您可以GetXmlElement(int index)GetDataValue(int index)GetEndingElement(int index)来提供对内容的访问权限数组。

另一种选择是在内部将数据存储在数组中,但接受并返回一个将所有数据捆绑在一起的类。这样你就可以有一个返回所有数据的索引器,因为所有数据都是一个包含元素,数据值和结束元素的单个对象。

您必须提供类似的方法来添加数据,并可能同时删除和更改。无论你是否想要这样做,opr只是exopse底层数组/列表取决于你是否希望能够控制添加/访问/删除/更改数组。

答案 1 :(得分:1)

我建议您使用List<T>而不是数组来存储数据。使用起来要容易得多。

请参阅here