2017-03-15 2 views
-1

Ich habe ein Windows 10 UWP-Projekt, aber ich glaube, das ist eine einfache C# /. Net Frage. Normalerweise würde ich string.Format verwenden, um eine Zeichenfolge mit Variablen zu formatieren. Wie folgt aus:Variablen in Zeichenfolge aus der Eigenschaft abgerufen

string.Format("My Name is: {0}", myName); 

Wie würde ich tun etwas ähnliches ist mein String wird als propery gespeichert?

public string Greeting { get; set; } = "My Name is: {0}"; 

Wenn ich diese Zeichenfolge abzurufen die Eigenschaft zugreifen, bekomme ich das gleiche Format, das ich in string.Format verwenden würde, aber ich kann nicht herausfinden, wie noch definieren {0} als myName?

Danke!

+1

Ich nehme an, Sie string.Format versucht haben (Gruß, meinName); ? –

Antwort

1

Angenommen Sie haben die Eigenschaft festlegen möchten, aber die vollständig zurückkehren Formatierte String, müssen Sie dies tun:

private string _greeting; 

public string Greeting 
{ 
    get 
    { 
     return $"My Name is: {_greeting}"; 
    } 
    set 
    { 
     _greeting = value; 
    } 
} 

aber ich glaube nicht, dass für besonders lesbaren Code macht. Stattdessen würde ich einen Namen Eigenschaft und einen Nur-Lese-Gruß, etwa so:

public string Name { get; set; } 
public string Greeting => $"My Name is: {Name}"; 

So, jetzt können Sie die Name Eigenschaft und erhalten gleichzeitig einen Gruß zu erzeugen.

Beachten Sie, ich verwende hier auch C# -String-Interpolation statt string.Format. Es sieht sehr gut aus und ist leichter zu lesen. Es erfordert auch C# Version 6 oder höher (in anderen Worten, mindestens Visual Studio 2015)

0

Eine Eigenschaft ist nur ein Getter- und Setter-Wrapper für eine Variable.

Sollten Sie nicht

Greeting = string.Format("My Name is: {0}", myName); in Ihrem Konstruktor aufrufen werden oder wo immer Sie myName zuweisen?

0

wenn myName eine String-Eigenschaft Ihrer Klasse ist, brauchen Sie nicht einen Setter für die Begrüßung und Sie können verwenden:

public string Greeting { get { return string.Format("My Name is: {0}", myName); } }

0

Ich glaube, das ist das, was Sie suchen:

string myName = "Steve"; 
    this.textBox1.Text = string.Format("{0}{1}", Test.Greeting, myName); 

    public class Test 
    { 
     public static string Greeting { get; set; } = "My Name is: "; 
    } 
Verwandte Themen