C# 将类的对象添加到arraylist中,然后检索它';使用arraylist创建数据成员
输出:-C# 将类的对象添加到arraylist中,然后检索它';使用arraylist创建数据成员,c#,c#-4.0,arraylist,c#-3.0,C#,C# 4.0,Arraylist,C# 3.0,输出:- using System; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; namespace classQuiz { class A { public int a = 100; public int b = 200; } class Program { static void Main(string[] args)
using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace classQuiz
{
class A {
public int a = 100;
public int b = 200;
}
class Program
{
static void Main(string[] args)
{
A obj = new A();//object of that class
ArrayList list = new ArrayList();
list.Add(obj);//passing object
Console.WriteLine(list[0]);//output down the code
Console.ReadKey();
}
}
}
在这个程序中,我将对象传递给数组列表,我想要的是如何使用数组列表在控制台上写入其数据成员。我想使用数组列表访问它们。我已经尝试过了
classQuiz.A
要做到这一点,我们可以做些什么
list[0].a;
//or
list[0].b;
我不想将arraylist更改为List
我真的很困惑D这是因为
ArrayList
不知道它存储的是什么类型的对象。它只知道存储对象
s,仅此而已。因此,编译器无法确定是否存在名为a
或b
的成员
您应该使用列表
,它确实知道它存储的对象的类型。只要改变这个:
+
为此:
ArrayList list = new ArrayList();
然后,Console.WriteLine(列表[0].a)代码>和控制台.WriteLine(列表[0].b)代码>应该工作
如果只能使用ArrayList
,请将列表中的对象强制转换为A
:
using System.Collections.Generic;
这是因为ArrayList
不知道它正在存储什么类型的对象。它只知道存储对象
s,仅此而已。因此,编译器无法确定是否存在名为a
或b
的成员
您应该使用列表
,它确实知道它存储的对象的类型。只要改变这个:
+
为此:
ArrayList list = new ArrayList();
然后,Console.WriteLine(列表[0].a)代码>和控制台.WriteLine(列表[0].b)代码>应该工作
如果只能使用ArrayList
,请将列表中的对象强制转换为A
:
using System.Collections.Generic;
当ArrayList
只是objet
实例的集合时,您的问题就出现了,这些实例对您的实际类型一无所知。所以你有很多可能性:
将每个项目转换为其实际类型:
Console.WriteLine(((A)list[0]).a);
Console.WriteLine(((A)list[0]).b);
或者更好的方法:使用泛型集合,例如强类型的List
:
A obj = new A();//object of that class
ArrayList list = new ArrayList();
list.Add(obj);//passing object
((A)list[0]).a = 1; // list[0] is just object
A obj=新的A()//该类的对象
Listlist=新列表();
列表。添加(obj)//正在传递的对象//列表[0]是您的实际类型
目标a=1;
当ArrayList
只是objet
实例的集合时,您的问题就出现了,这些实例对您的实际类型一无所知。所以你有很多可能性:
将每个项目转换为其实际类型:
Console.WriteLine(((A)list[0]).a);
Console.WriteLine(((A)list[0]).b);
或者更好的方法:使用泛型集合,例如强类型的List
:
A obj = new A();//object of that class
ArrayList list = new ArrayList();
list.Add(obj);//passing object
((A)list[0]).a = 1; // list[0] is just object
A obj=新的A()//该类的对象
Listlist=新列表();
列表。添加(obj)//正在传递的对象//列表[0]是您的实际类型
目标a=1;
不要再使用ArrayList
,改用List
,因为ArrayList
只包含类型object
的实例,这些实例没有a
或b
成员。为什么不想更改为List?没有任何强有力的理由,我们很难帮助您使代码更好、更易于维护。好的,我正在寻找第二种方法,不再使用ArrayList
,改为使用List
,因为ArrayList
只包含类型object
的实例,这些实例没有a
或b
成员。为什么不改为List?没有任何强有力的理由,我们很难帮助您使代码更好、更易于维护。好的,我正在寻找第二种方法我不想将arraylist更改为List我已经提供了一种不使用列表的解决方案!你没注意到吗@AwaisAhmadi尝试过,但我无法理解,但现在我明白了:我不想将arraylist更改为List我已经提供了一个不使用列表的解决方案!你没注意到吗@AwaisAhmadi尝试过,但我无法理解,但现在我明白了:我想要的是我想要的,我想要的是我想要的