【问题标题】:C# using ArrayList from another classC# 使用另一个类中的 ArrayList
【发布时间】:2016-08-03 14:39:59
【问题描述】:

我有一个类 Racun.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');

我收到错误消息

当前上下文中不存在名称“ListaStavaka”。

所以我的问题是当我在另一个类中有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 指令或程序集引用?)” ...我不明白,因为此属性是对象“Stavka”的属性,我使用“racun.ListaStavaka()”保存到此 ArrayList 中。 . 所以我做错了什么?

【问题讨论】:

  • 我编辑了我的代码。你是这个意思吗?
  • 好的,谢谢。我现在看看我是否放了racun。进入 ListaStavaka.Add() 以获取 racun.ListaStavaka.Add("test") 它的工作原理。

标签: c# object arraylist add


【解决方案1】:

我看不到您的实际 ListaStavaka 是在哪里声明的。

您的代码将它的一个实例演示为您的 Racun 类的属性之一,因此如果您有此类的实例,您应该能够按预期访问它:

// 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
}

【讨论】:

  • 谢谢,这对我有用,但现在我有另一个问题/疑问:(
  • 我编辑了原始问题,您可以在问题底部看到我的问题。
猜你喜欢
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2013-02-10
相关资源
最近更新 更多