我们如何在控制台中输出所有的结构元素数组
本文关键字:结构 元素 数组 输出 控制台 我们 | 更新日期: 2023-09-27 18:24:33
我最近开始学习c#。为了打印所有元素,你能帮我写一个正确的循环吗。
class Program
{
static void Main(string[] args)
{
Arrays[] arr = new Arrays[500]; //Initialize an array
arr[2].X = 11;
foreach (var i in arr) //Trying to loop through
{
Console.WriteLine(i); //Result: Array.Array
}
}
}
public struct Arrays
{
public Int32 X, Y;
}
对象的实际ToString()
实现只输出对象的类型,这就是为什么您只看到Array.Array
。
你有两个选择:
-
在循环本身中进行格式化:
foreach (var i an arr) { Console.WriteLine("X: {0}, Y: {1}", i.X, i.Y); }
-
使用自定义实现覆盖
ToString
:public struct Arrays { public Int32 X, Y; public override string ToString() { return string.Format("X: {0}, Y: {1}", this.X, this.Y); } }
顺便说一句,公共领域被认为是糟糕的设计。公共财产是更好的选择。
例如,您可以重写结构的ToString()方法,或者访问Console.WriteLine(i);
语句中Arrays的属性。
class Program
{
static void Main(string[] args)
{
Arrays[] arr = new Arrays[500]; //Initialize an array
arr[2].X = 11;
foreach (var i in arr) //Trying to loop through
{
Console.WriteLine(i); //Result: Array.Array
}
}
}
public struct Arrays
{
public Int32 X, Y;
public override string ToString()
{
return X + " x " + Y;
}
}
Console.WriteLine(i);
方法需要一个类型为System.String
的参数。当您为其提供类型为Arrays
的结构时,它会通过调用每个结构或对象所具有的ToString
方法将其隐式转换为String
。默认情况下,它只打印类型的名称——确切地说就是您看到的。您可以覆盖ToString
方法来更改输出。
public struct Arrays
{
public Int32 X, Y;
public override string ToString()
{
return X.ToString() + " " + Y.ToString();
}
}