arrayLists中的C#对象

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

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

感谢所有的帮助!

除非您处于必须使用.NET 1.0 / 1.1或需要与使用ArrayList遗留代码进行交互的情况下 – 您应该避免在新代码中使用ArrayLists 。 请改用通用集合类型List<>

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

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

 Animal dog = new Animal("dog"); Animal cat = new Animal("cat"); List animalList = new List(); // 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"); 

ListArrayList的公共接口实际上非常相似。 主要区别在于ArrayList只能存储object引用,因为它是在.NET支持的generics之前实现的。

 ArrayList listOfObjects = new ArrayList(); int myAge = 207; listOfObjects.Add( (object)myAge ); 

在上面的示例中,您必须将类型(如.NET中的值类型 )转换为object。 这会导致装箱转换 – 将int值类型复制到堆上的新位置,并将其传递给ArrayList。 拳击转换是使用ArrayList的缺点之一 – List通过作为generics类来避免这种情况。 另一个问题是ArrayList不会阻止您将列表中的不同类型混合在一起。 例如:

 listOfObjects.Add( (object)myAge ); listOfObjects.Add( "Hello World" ); 

都是允许的。 但是,在访问ArrayList元素时,您必须知道要尝试检索的类型。 这使得ArrayList作为集合类型更加脆弱,因为调用者必须编写代码以保护自己免受存储在ArrayList中的任意类型的影响,或者使用reflection和运行时类型检查来转换存储的值。 List通过允许编译器帮助validation集合中是否只存储了适当的类型(与List中的类型参数T匹配的类型)来避免这两个问题。

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

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

 List myList = new List(); 

要么

 var myList = new List(); 

那么方法将是类似的,例如

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

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

另外,你可以阅读这个msdn链接

即时通讯使用类似的方法,但我不能使用它。一些错误,如对象是字段不能使用类型..:/我想知道我能够在java中使用它甚至与ArrayList对象..我低估它bcz我对象是字段,但为什么我不能使用它:(

List lists = new List();

 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);