学校要求我使用公共覆盖字符串。我想有这样的事情:
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 :(得分: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");