C#使用另一个类中的ArrayList
我有一节课是Racun.csC#使用另一个类中的ArrayList,c#,object,arraylist,add,C#,Object,Arraylist,Add,我有一节课是Racun.cs public class Racun { private string _nazivKupca; public string NazivKupca { get { return _nazivKupca; } set { _nazivKupca = value; } } private
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
,但我确实需要使用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'的定义,并且找不到接受'object'类型的第一个参数的扩展方法'NazivProizvoda'(是否缺少using指令或程序集引用?)”。。。我不明白,因为这些属性是我用“racun.ListaStavaka()”保存到这个ArrayList中的对象“Stavka”的属性。。。那么我做错了什么呢?我不知道您的实际
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");
如果没有对象,则需要创建一个实例,并简单地调用它ListaStavaka
,以使用它:
// Create an ArrayList on it's own
var ListaStavaka = new ArrayList();
// Add to the array list
ListaStavaka.Add("test");
关于问题第二部分的更新
当显示ArrayList中的元素时,这些元素是Stavka
对象,您可能希望在循环中指出这些元素,以便.NET知道它们是什么(否则它假定它们是泛型object
类型):
我编辑了我的代码。这就是你的意思吗?是的,谢谢。我现在明白了,如果我把拉昆放进去。进入ListaStavaka.Add()以获取racun.ListaStavaka.Add(“测试”)它可以工作。谢谢,这对我来说很有效,但现在我有另一个问题:(我编辑了原始问题,你可以在问题底部看到我的问题。
foreach (Stavka item in racun.ListaStavaka)
{
// Access your properties using item.NazivProizvoda, etc. here
}