gpt4 book ai didi

c# - 将多个对象值从 Arraylist 写入控制台

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:38 27 4
gpt4 key购买 nike

我正在编写一个控制台应用程序,但在将所有对象属性值写入控制台时遇到了问题。我得到了一个包含所有属性的类,但我无法像处理普通列表那样访问它们。例如,一个普通的列表循环可能是这样的,带有属性示例 (carBrand) 和列表名称 Cars。

for (int i = 0; i < Cars.Length; i++)
{
Console.WriteLine(Cars[i].carBrand)
}

但是对于 ArrayList 这似乎不起作用。这是为什么?我一直在四处寻找不同的方法,但没有从中得到任何好处...

代码:

static void Main(string[] args)
{


int menyval;
ArrayList bilar = new ArrayList();
Bil nybil = new Bil();
string ägareefter;

do
{
Console.WriteLine("\nVälkommen till Dimmans Bilrace!");
Console.WriteLine("Vi har {0} bilar i race just nu.", nybil.IRace);
Console.WriteLine("\nVälj något alternativ i menyn nedan, klicka sedan ENTER:");
Console.WriteLine("\n1. Lägg till en bil först.");
Console.WriteLine("2. Lägg till en bil sist.");
Console.WriteLine("3. Lägg till en bil efter en annan bil.");
Console.WriteLine("4. Visa alla bilar i listan.");
Console.WriteLine("0. Avsluta programmet.");
Console.Write("\nDitt val:");
menyval = int.Parse(Console.ReadLine());

switch (menyval)
{
case 0:
Console.WriteLine("Programmet kommer nu avslutas. Tryck på valfri knapp.");
Console.ReadKey();
break;
case 1:
Console.WriteLine("\nLägg till en bil först. Skriv in det som efterfrågas och avsluta med ENTER.");
Console.WriteLine("Ange ägarens namn:");
nybil.Ägarnamn = Console.ReadLine();
Console.WriteLine("Ange tillverkarens namn:");
nybil.Tillverkarnamn = Console.ReadLine();
Console.WriteLine("Ange modellens namn:");
nybil.Modellnamn = Console.ReadLine();

bilar.Insert(0, nybil);
nybil.LäggTillBiliRace(1);
Console.WriteLine("Nu har bilen lagts till i racet. Klicka på valfri knapp för att fortsätta.");
Console.ReadKey();
break;

case 2:
Console.WriteLine("\nLägg till en bil sist. Skriv in det som efterfrågas och avsluta med ENTER.");
Console.WriteLine("Ange ägarens namn:");
nybil.Ägarnamn = Console.ReadLine();
Console.WriteLine("Ange tillverkarens namn:");
nybil.Tillverkarnamn = Console.ReadLine();
Console.WriteLine("Ange modellens namn:");
nybil.Modellnamn = Console.ReadLine();

bilar.Add(nybil);
nybil.LäggTillBiliRace(1);

Console.WriteLine("Nu har bilen lagts till i racet. Klicka på valfri knapp för att fortsätta.");
Console.ReadKey();
break;

case 3:
Console.WriteLine("\nLägg till en bil efter en annan bil. Skriv in det som efterfrågas och avsluta med ENTER.");
Console.WriteLine("Följande bilar har vi:");

for (int i = 0; i < bilar.Count; i++)
{
Console.WriteLine("[Bil " + i + ": " + "Ägare = " + ((Bil)bilar[i]).Ägarnamn + ", "
+ "Tillverkare = " + ((Bil)bilar[i]).Tillverkarnamn + ", Modell = " +
((Bil)bilar[i]).Modellnamn + "]");
}

Console.Write("\nAnge namnet på ägaren som du vill placera den nya bilen efter:");
ägareefter = Console.ReadLine();
break;

case 4:
if (bilar.Count != 0)
{
Console.WriteLine("\nVisar alla bilar i listan:");

for (int i = 0; i < bilar.Count; i++)
{
Console.WriteLine("[Bil " + i + ": " + "Ägare = " + ((Bil)bilar[i]).Ägarnamn + ", "
+ "Tillverkare = " + ((Bil)bilar[i]).Tillverkarnamn + ", Modell = " +
((Bil)bilar[i]).Modellnamn + "]");
}
}
else
{
Console.WriteLine("\nListan innehåller inga bilar än. Klicka på valfi knapp för att komma till startmenyn");
Console.ReadKey();
}
break;

default:
Console.WriteLine("\n Fel! Ange en siffra mellan de angivna värdena som finns. Tryck valfri knapp för att fortsätta.");
Console.ReadKey();
break;
}
} while (menyval != 0);
}
}

类代码:

class Bil
{
private string _ägarNamn;
private string _tillverkarnamn;
private string _modellnamn;
private int _iRace;
ArrayList billista = new ArrayList();

public Bil()
{
_ägarNamn = "";
_tillverkarnamn = "";
_modellnamn = "";
}

public Bil(string ägarnamn, string tillverkarnamn, string modell)
{
_ägarNamn = ägarnamn;
_tillverkarnamn = tillverkarnamn;
_modellnamn = modell;
}

public string Ägarnamn
{
get { return _ägarNamn; }
set { _ägarNamn = value; }
}

public string Tillverkarnamn
{
get { return _tillverkarnamn; }
set { _tillverkarnamn = value; }
}

public string Modellnamn
{
get { return _modellnamn; }
set { _modellnamn = value; }
}

public int IRace
{
get { return _iRace; }
set { _iRace = value; }
}

public void LäggTillBiliRace(int i)
{
IRace += i;
}

最好的问候。

最佳答案

ArrayList 是非泛型类型,因此其中的所有元素都是对象。您应该首先转换 ArrayList:

foreach (var car in cars.Cast<Car>())
{
Console.WriteLine(car.carBrand)
}

关于c# - 将多个对象值从 Arraylist 写入控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com