1

我有以下课程People

class People
{
    public enum Gender
    {
        Man = 'w',
        Woman = 'f'
    }

    public struct Person
    {
        public string First, Last;
        public Gender Gender;
        public int Age;
        public float Height, Weight;
    }

    public struct Group
    {
        public int Members;
        public string Name;
    }
}

现在,我们位于类中Program

class Program
{
    static void Main( string[] args )
    {
        People.Person p = new People.Person();

        p.First = "Victor";
        p.Last = "Barbu";
        p.Age = 14;
        p.Height = 175;
        p.Weight = 62;
        p.Gender = People.Gender.Man;

        Console.ReadLine();
    }
}

我想写这样一行:

Console.Write( x.toString() );

如何自定义x.toString()方法,所以控制台中的结果如下

Victor Barbu
14 years
Man
175 cm
62 kg

?

提前致谢!

4

3 回答 3

3

Just overrive the ToString() method

    public override string ToString()
    {
        // return the value you want here.
    }
于 2012-10-24T16:23:43.733 回答
1

您想要覆盖 Person 类中的 ToString 方法。请参阅:http: //msdn.microsoft.com/en-us/library/ms173154 (v=vs.80).aspx

在你的情况下

public class Person
{
   // Snip
   public override string ToString()
   {
       return this.First + " " + this.Last; 
   }
}

如果你这样做

Console.WriteLine(person.ToString()); 

预期的输出将是名字和姓氏,您显然可以扩展它以包括您的其他字段和换行符等。

边注; 您正在做的实际上是“漂亮的打印”,我建议创建一个静态方法“public static string PrettyPrintPerson(Person p)”或类似方法来处理类的文本格式。

于 2012-10-24T16:26:55.503 回答
0
class People 
{ 

    public override string ToString()
    {
        //This will return exactly what you just put down with line breaks
        // then just call person.ToString()
        return string.format("{1} {2}{0}{3} years{0}{4}{0}{5} cm{0}{6} kg", Environment.NewLine,
            First, Last, Age, Gender, Height, Weight);
    }
}
于 2012-10-24T16:27:26.523 回答