公共覆盖字符串更多返回

时间:2017-01-07 20:26:17

标签: c# visual-studio class return override

学校要求我使用公共覆盖字符串。我想有这样的事情:

lbl_Name.Text = ToString(*Field: Naam from class Gebruikerklasse*)
lbl_Surname.Text = ToString(*Field: Achternaam from class Gebruikersklasse*)

我班上有多个字段,但我想只返回其中一些字段。我是否需要不同的方法,或者只使用一种方法可以做到这一点,并且使用一些if语句和布尔值可以获得更多回报?

这就是我现在所拥有的:

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace BurnThatFat
    {
        class Gebruikerklasse
        {
            public string Naam;
            public string Achternaam;
            public int Leeftijd;
            public string Geslacht;
            public int Huidiggewicht;
            public int Streefgewicht;
            public string Gebruikersnaam;
            public string Wachtwoord;

            public override string ToString()
            {
                return Naam;

            }
// I want to use the same method again but this time for another field.


 public override string ToString()
        {
            return Gebruikersnaam;
        }

    }

}

2 个答案:

答案 0 :(得分:1)

using System;

namespace BurnThatFat
{
    class Program
    {
        static void Main()
        {
            var g1 = new Gebruikerklasse1() { Naam = "Duncan", Geslacht = "Male", Huidiggewicht = 75, Gebruikersnaam = "DCarr" };
            var g2 = new Gebruikerklasse2() { Naam = "Duncan", Geslacht = "Male", Huidiggewicht = 75, Gebruikersnaam = "DCarr" };

            Console.WriteLine(g1);
            Console.WriteLine(g2);

            Console.ReadKey();
        }
    }

    class Gebruikerklasse1
    {
        public string Naam;
        public string Achternaam;
        public int Leeftijd;
        public string Geslacht;
        public int Huidiggewicht;
        public int Streefgewicht;
        public string Gebruikersnaam;
        public string Wachtwoord;
    }

    class Gebruikerklasse2
    {
        public string Naam;
        public string Achternaam;
        public int Leeftijd;
        public string Geslacht;
        public int Huidiggewicht;
        public int Streefgewicht;
        public string Gebruikersnaam;
        public string Wachtwoord;

        public override string ToString()
        {
            return string.Format("{0} - {1} - {2} - {3}", Gebruikersnaam, Geslacht, Huidiggewicht, Naam);
        }
    }
}

输出是:

BurnThatFat.Gebruikerklasse1
DCarr - Male - 75 - Duncan

"g1" outputs default class-to-string output
"g2" outputs overriden format - which can include any members you like

对不起,如果我误解了。

答案 1 :(得分:1)

我建议实施IFormattable interface:

    class Gebruikerklasse {
      ...

      // "A" - Achternaam
      // "G" - Gebruikersnaam
      // "N" - Naam
      // null, empty - default ToString format  
      public string ToString(string format, IFormatProvider formatProvider) {
        if (string.IsNullOrEmpty(format))
          return ToString(); 
        else if ("N".Equals(format, StringComparison.OrdinalIgnoreCase))
          return Naam;
        else if ("A".Equals(format, StringComparison.OrdinalIgnoreCase))
          return Achternaam;
        else if ("G".Equals(format, StringComparison.OrdinalIgnoreCase))
          return Gebruikersnaam;
        else
          throw new FormatException($"Unknown format '{format}'");
      }

      public string ToString(string format) {
        return ToString(format, CultureInfo.CurrentCulture);
      }

      public override string ToString() {
        return Gebruikersnaam;
      }
    }

所以你可以把:

    Gebruikerklasse instance = new Gebruikerklasse();

    lbl_Name.Text = instance.ToString("G");
    lbl_Surname.Text = instance.ToString("A");