C# 使用来自另一个 class 的 ArrayList

C# using ArrayList from another class

我有一个classRacun.cs

public class Racun
{
    private string _nazivKupca;
    public string NazivKupca
    {
        get
        {
            return _nazivKupca;
        }
        set
        {
            _nazivKupca = value;
        }
    }

    private string _djelatnik;
    public string Djelatnik
    {
        get
        {
            return _djelatnik;
        }
        set
        {
            _djelatnik = value;
        }
    }

    public DateTime Datum
    {
        get
        {
            return DateTime.Now;
        }
    }

    private string _brojRacuna;
    public string BrojRacuna
    {
        get
        {
            return _brojRacuna;
        }
        set
        {
            _brojRacuna = value;
        }
    }

    private ArrayList _listaStavaka = new ArrayList(); 
    public ArrayList ListaStavaka
    {
        get { return _listaStavaka; } 
    }

现在我正试图从我的主程序中将对象保存到这个 ArrayList ListaStavaka 中。

class Program
{
    static void Main(string[] args)
    {

    Racun racun = new Racun();
    Console.Write("Kupac: ");
    racun.NazivKupca = Console.ReadLine();
    Console.Write("Djelatnik: ");
    racun.Djelatnik = Console.ReadLine();
    Console.Write("Broj računa: ");
    racun.BrojRacuna = Console.ReadLine();

    char unos = 'd';

        do
        {
            Stavka stavka = new Stavka();
            Console.Write("Naziv proizvoda: ");
            stavka.NazivProizvoda = Console.ReadLine();
            Console.Write("Kolicina:  ");
            stavka.Kolicina = int.Parse(Console.ReadLine());
            Console.Write("Jedinicna mjera:  ");
            stavka.JedinicnaMjera = Console.ReadLine();
            Console.Write("Cjena bez pdv-a: ");
            stavka.Cijena = double.Parse(Console.ReadLine());

            ListaStavaka.Add(stavka);

            Console.WriteLine("Zelite li unjeti novu stavku (D/N): ");
            unos = Console.ReadKey().KeyChar;
            Console.WriteLine("\n");

        } while (Char.ToUpper(unos) == 'D');

我收到错误消息

The name 'ListaStavaka' does not exist in the current context.

所以我的问题是当我在另一个 class 中有 ArrayList 时,如何在我的主程序中将对象添加到这个 ArrayList 中?我需要在主程序中做什么才能让它工作?

拜托,我搜索了这个问题,大家都建议用List<T>代替,但我确实需要用ArrayList。谢谢。

编辑:

好的,所以我设法解决了这个问题,现在我有另一个问题:

我试过这个:

 foreach (var item in racun.ListaStavaka)
        {
            Console.WriteLine("| {0}.{1}, {2} {3}, {4} kn/{5} = {6} kn", i, item.NazivProizvoda, item.Kolicina, item.JedinicnaMjera, item.Cijena, item.JedinicnaMjera, item.UkupnaCijena());
            i++;
            ukupno = ukupno + item.UkupnaCijena();
        }

但是我在这个 WriteLine 行中写的每个 属性 中都出现错误...“'object' 不包含 'NazivProizvoda' 的定义并且没有扩展方法 'NazivProizvoda' 可以找到接受类型 'object' 的第一个参数(您是否缺少 using 指令或程序集引用?)”...我不明白,因为此属性是对象 [=38= 的属性] 我用 "racun.ListaStavaka()" 保存到这个 ArrayList 中......那么我做错了什么?

我没看到你的实际 ListaStavaka 声明在哪里。

您的代码演示了它的一个实例作为您的 Racun class 的属性之一,因此如果您有此 class 的一个实例,您应该能够访问正如预期的那样:

// Create an instance of your Racun object so that you can access it's properties
var racun = new Racun();
// After instantiating an object, you can access its public properties 
// as expected
racun.ListStavaka.Add("test");

如果没有对象,您将需要创建一个 ArrayList 的实例并简单地调用它 ListaStavaka 来使用它:

// Create an ArrayList on it's own
var ListaStavaka = new ArrayList();
// Add to the array list
ListaStavaka.Add("test");

关于问题第二部分的更新

当显示来自 ArrayList 的元素时,这些元素是 Stavka 对象,您可能希望在循环中指出这些元素,以便 .NET 知道它们是什么(否则它假定它们是通用的 object 类型):

foreach (Stavka item in racun.ListaStavaka)
{
     // Access your properties using item.NazivProizvoda, etc. here
}