重写ToString()

时间:2015-08-23 21:10:30

标签: c#

我有一个类Record,并且在该类中是一个对象(字段)数组。理想情况下,我希望能够调用Record.ToString()并返回字段数组中每个Field的ToString()。 Field类包含charArray。

class Record
{
    class Field
    {
        public char[] contents;
        public Field(int size)
        {
            contents = new char[size];
        }
    }
    public Field[] fields;
    public Record()
    {
        fields = new Field[4];
        foreach(Field f in fields)
            f = new Field(4);
    }
    public override string ToString()
    {
        string output = null;
        foreach(Field f in fields)
            output += f.contents.ToString();
        return output;
    }
}

请注意;我没有发布我的所有代码,但我确实初始化了填充内容char []的函数,因此它们不是空的。

出于某种原因,调用Record.ToString()会返回System.Char []。 我有一个Record实例,并尝试过多种不同的方法,包括在Field类中重写ToString(),返回contents.ToString(),但它给了我相同的输出。最奇怪的是,

System.Console.WriteLine(Record.fields[x].contents);

给我内容中包含的字符串。

2 个答案:

答案 0 :(得分:2)

使用

output += new string(f.contents);

here。另外,请考虑将StringBuilder用于output

答案 1 :(得分:1)

当你调用f.contents.ToString()时,你正在返回char [];不是内容的内容。如果你想要返回内容中的内容,那么你要么必须遍历f.contents [],要么使用Phillip Grassl发布的内容,它将使用char []并从中创建一个字符串。

f.contents.ToString()= char [];

new string(f.contents)= char [0] + char [1] + char [2] + char [3]。 。 。等