2017-01-07 3 views
-1

학교에서 공개 무시 문자열을 사용하도록 요청합니다. 나는 이런 식으로 뭔가를하고 싶은 :public override string more returns

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; 
     } 

    } 

} 
+0

당신이 * –

+0

을하고 싶지 그리고 당신은 지금 읽으면 무슨 * 명확하지? @ L.B – Gigitex

+1

컴파일러로 하여금 합리적인 지시없이 무엇을하고 싶은지를 알아 내고 싶다면 ... 분명히 많은 코드를 작성하는 이유는 무엇인가? :) "C# method overloads"를 읽으면 언어에서 의미가있는 것을 볼 수 있습니다. –

답변

1

나는 IFormattable 인터페이스를 구현하는 것이 좋습니다 :

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"); 
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 

죄송합니다.