Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将类的对象添加到arraylist中,然后检索它';使用arraylist创建数据成员_C#_C# 4.0_Arraylist_C# 3.0 - Fatal编程技术网

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尝试过,但我无法理解,但现在我明白了:我想要的是我想要的,我想要的是我想要的