arrayLists中的C#对象

时间:2010-07-29 22:37:14

标签: c# object arraylist

我在C#中使用ArrayList,我想知道如何将对象添加到ArrayList,然后从中检索值?

简而言之,如何添加,删除,编辑和读取包含类的ArrayList对象?

感谢所有人的帮助!

4 个答案:

答案 0 :(得分:27)

除非您处于必须使用.NET 1.0 / 1.1,或需要与使用ArrayList的旧代码进行交互的情况 - 否则您应该避免使用{{1}在新代码中。请改用generic集合类型ArrayLists

List<>中添加,删除和替换项目的操作非常简单。

假设您有一些假设的类型List<T>,您将在列表中存储实例:

Animal

Animal dog = new Animal("dog"); Animal cat = new Animal("cat"); List<Animal> animalList = new List<Animal>(); // example of adding items to the list animalList.Add( dog ); animalList.Add( cat ); // example of removing items form the list animalList.Remove( cat ); // example of replacing an item at a given position animalList[0] = new Animal("giraffe"); List<T>的公共接口实际上非常相似。主要区别在于,ArrayList只能存储ArrayList个引用,因为它是在.NET支持的泛型之前实现的。

object

在上面的示例中,您必须将类似ArrayList listOfObjects = new ArrayList(); int myAge = 207; listOfObjects.Add( (object)myAge ); which are value types in .NET)的类型转换为对象。这会导致装箱转换 - 将int值类型复制到堆上的新位置,并将其传递给ArrayList。 Boxing conversions是使用int的一个缺点 - ArrayList因为generic class而避免这种情况。另一个问题是List<T>不会阻止您将列表中的不同类型混合在一起。例如:

ArrayList

都是允许的。但是,在访问listOfObjects.Add( (object)myAge ); listOfObjects.Add( "Hello World" ); 的元素时,您必须知道您要检索的类型。这使得ArrayList作为集合类型更加脆弱,因为调用者必须编写代码以保护自己免受ArrayList中存储的任意类型的影响,或者使用反射和运行时类型检查来转换值存储。 ArrayList允许编译器帮助验证集合中是否只存储了适当的类型(与List<T>中的类型参数T匹配的类型,从而避免了这两个问题})。

还有很多关于与馆藏互动的文章 - 实际上还有。这是关于这个主题的许多好书的link to just one我的建议是,在开始用.NET / C#编写代码之前,你应该花时间去familiarize yourself with the basic concepts of the C# language and type system - 什么是引用与值类型。什么是原始。什么是泛型。这将有助于确保在您开始编写代码时,代码可以满足您的需要。 C#有一个复杂而丰富的类型系统 - 以及庞大的框架类库。在深入编写实际代码之前,有必要在语言的核心方面有一个良好的基础。像我上面展示的那些例子只会让你到目前为止 - 他们已经引入了许多语言概念:变量,构造函数,泛型,拳击转换等。

答案 1 :(得分:2)

首先,最好使用List,而不是C#中的ArrayList。例如,如果您想要一个字符串列表:

List<String> myList = new List<String>();

var myList = new List<String>();

然后方法将类似,例如

myList.Add("bla");
var test = myList[0];

答案 2 :(得分:0)

你可以像在列表或集合上一样工作(尝试使用.add方法)。

另外,您可以read this msdn link

答案 3 :(得分:0)

我使用类似的方法,但我不能使用它..像对象一样的错误字段不能用作类型..:/我想知道我能够在java中使用它甚至与ArrayList对象...我不知道它bcz我的对象是字段,但为什么我不能使用它:(

列表列表=新列表();

person p2 = new person("Hammad", "Lahore", 1, 123);
person p3 = new person("adnan", "Lahore", 1, 123);
person p4 = new person("qamar", "Lahore", 1, 123);
lists.Add(p2);