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
}
我有一个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
}