如何向控制台显示作为数组元素的结构的所有字段? C#

时间:2016-04-06 22:56:02

标签: c# .net arrays struct tostring

让我说我有一个自定义类型的数组,并且我输入了10个自定义结构类型的对象。 CustomType[] Record = new CustomType[10];

现在由于每个CustomType都有字段,我可以为数组中的CustomType的每个元素分配字段。 例如:

Record[0].name = "John";
Record[0].age = 34;

还有ToString()方法,它在int或string等常用类型中将类型的值转换为字符串。所以,如果我们有

someIntArray[0] = 32;
Console.WriteLine(someIntArray[0].ToString());

然后我们会得到输出" 32"在控制台上,而不是它的值类型int。

但是如果我们在上面的例子中使用与CustomType数组相同的方法,并写:

Console.WriteLine(Record[0].ToString());

然后我们不会获得对象包含的值(在其字段中),但是它的类型。 当然我可以写一下例如:

Console.WriteLine(Record[0].name + Record[0].age);

但是你可以看到如果结构有很多字段,这变得很老而且很乏味。特别是如果你不想只打印出一个struct对象的所有字段,而是打印出数组中的所有struct对象。

所以这是我的问题:.NET中是否有方法,或者其他一些简单的方法,以便我可以更简单,更快速地操作(例如打印)数组元素的所有字段,如结构?

2 个答案:

答案 0 :(得分:1)

我认为人们认为结构不能包含方法,但它们绝对可以!只需创建一个ToString()方法。

答案 1 :(得分:1)

你仍然可以覆盖结构中的ToString()!

struct Record
{
    string name;
    int age;

    public override string ToString()
    {
        return String.Format("{0} {1}", record.name, record.age);
    }

}

因此,您无需明确地调用它:

Console.WriteLine(record); // e.g., Joe 5