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

ToString()メソッドをオーバーライドするだけ

    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 に答える