通用列表中的数组
Array in generic List
我需要创建一个通用列表并将数据保存在 Array
class.
数组将与我在构造方法中提到的一样多(我对更实用的解决方案和想法持开放态度)。
我的问题是,当我在列表中打印时,我没有得到 int 值,而且我无法找到如何逐一访问该数据。
public class Demo
{
public int GrupKodu { get; set; }
public string GrupAd { get; set; }
public int[] Notlar;
public Demo(int GrupKodu, string GrupAd, int NotAdet , int[] a )
{
this.GrupKodu = GrupKodu;
this.GrupAd = GrupAd;
this.Notlar = new int[NotAdet];
this.Notlar = a;
}
public override string ToString()
{
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {Notlar}";
}
}
我正在调用数据插入和 for
循环。
我用 Foreach
循环尝试了相同的打印操作,但是 Sonush
没有改变。
static void Main(string[] args)
{
List<Demo> DemoListe = new List<Demo>();
DemoListe.Add(new Demo(101, "umt", 6, new int[] { 1, 2, 3, 4, 5, 6 }));
DemoListe.Add(new Demo(101, "umt", 2, new int[] { 1, 2,}));
DemoListe.Add(new Demo(101, "umt", 3, new int[] { 1, 2, 3}));
DemoListe.Add(new Demo(101, "umt", 7, new int[] { 1, 2, 3, 4, 5, 6,7 }));
DemoListe.Add(new Demo(101, "umt", 8, new int[] { 1, 2, 3, 4, 5, 6 ,7,8}));
foreach (Demo item in DemoListe)
{
Console.WriteLine(item.ToString());
}
for (int i = 0; i < DemoListe.Count(); i++)
{
Console.WriteLine($"GrupAd : {DemoListe[i].GrupAd} GrupKod : {DemoListe[i].GrupKodu} Notlar : {DemoListe[i].Notlar.ToArray<int>()}");
}
}
您可以像这样在 ToString
覆盖中使用 String.Join
:
public override string ToString()
{
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {String.Join(", ", Notlar)}";
}
String.Join
将可枚举对象转换为由分隔符分隔的字符串。
所以如果Notlar = [1,2,3]
,String.Join(", ", Notlar) = "1, 2, 3"
您可以按照上述答案使用 Join 简单地展平数组或将内容一一打印:
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if (Notlar.Length > 0)
{
foreach (int s in Notlar)
{
sb.Append(" ");
sb.Append(s.ToString());
}
}
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {sb.ToString()}";
}
我需要创建一个通用列表并将数据保存在 Array
class.
数组将与我在构造方法中提到的一样多(我对更实用的解决方案和想法持开放态度)。
我的问题是,当我在列表中打印时,我没有得到 int 值,而且我无法找到如何逐一访问该数据。
public class Demo
{
public int GrupKodu { get; set; }
public string GrupAd { get; set; }
public int[] Notlar;
public Demo(int GrupKodu, string GrupAd, int NotAdet , int[] a )
{
this.GrupKodu = GrupKodu;
this.GrupAd = GrupAd;
this.Notlar = new int[NotAdet];
this.Notlar = a;
}
public override string ToString()
{
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {Notlar}";
}
}
我正在调用数据插入和 for
循环。
我用 Foreach
循环尝试了相同的打印操作,但是 Sonush
没有改变。
static void Main(string[] args)
{
List<Demo> DemoListe = new List<Demo>();
DemoListe.Add(new Demo(101, "umt", 6, new int[] { 1, 2, 3, 4, 5, 6 }));
DemoListe.Add(new Demo(101, "umt", 2, new int[] { 1, 2,}));
DemoListe.Add(new Demo(101, "umt", 3, new int[] { 1, 2, 3}));
DemoListe.Add(new Demo(101, "umt", 7, new int[] { 1, 2, 3, 4, 5, 6,7 }));
DemoListe.Add(new Demo(101, "umt", 8, new int[] { 1, 2, 3, 4, 5, 6 ,7,8}));
foreach (Demo item in DemoListe)
{
Console.WriteLine(item.ToString());
}
for (int i = 0; i < DemoListe.Count(); i++)
{
Console.WriteLine($"GrupAd : {DemoListe[i].GrupAd} GrupKod : {DemoListe[i].GrupKodu} Notlar : {DemoListe[i].Notlar.ToArray<int>()}");
}
}
您可以像这样在 ToString
覆盖中使用 String.Join
:
public override string ToString()
{
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {String.Join(", ", Notlar)}";
}
String.Join
将可枚举对象转换为由分隔符分隔的字符串。
所以如果Notlar = [1,2,3]
,String.Join(", ", Notlar) = "1, 2, 3"
您可以按照上述答案使用 Join 简单地展平数组或将内容一一打印:
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if (Notlar.Length > 0)
{
foreach (int s in Notlar)
{
sb.Append(" ");
sb.Append(s.ToString());
}
}
return $"Grup Kodu : {this.GrupKodu} Grup Adı : {this.GrupAd} Notlar : {sb.ToString()}";
}