2017-01-07 5 views
-1

Школа просит меня использовать общедоступную строку переопределения. Я хотел бы иметь что-то вроде этого:Публичная строка переопределения больше возвращает

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

У меня есть несколько полей в моем классе, но я хочу вернуть только некоторые из них. Нужны ли мне разные методы или я могу сделать это с помощью всего одного метода и больше возвратов с некоторыми операторами if и booleans?

Это то, что я сейчас:

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#», чтобы понять, что имеет смысл на этом языке. –

ответ

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 

Извините, если я не понял.