Dieser Code ist nicht gültig:C# 4.0 - Wie Griff Optional String-Parameter
private void Foo(string optionalString = string.Empty)
{
// do foo.
}
Aber dieser Code:
private void Foo(string optionalString = "")
{
// do foo.
}
Warum? Da string.Empty ein schreibgeschütztes Feld und keine Konstante ist und die Standardwerte für optionale Parameter eine Kompilierungszeitkonstante sein müssen.
Also, auf meine Frage ... (na ja, Sorge)
Das ist, was ich zu tun haben musste:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
// do foo.
if (!string.IsNullOrEmpty(optionalString))
// etc
}
How do you Jungs behandeln optionale String-Parameter?
Warum können sie nicht String.Empty eine Kompilierzeitkonstante machen?
warum nicht halten mit „?“ Das ist alles, was ich mache, aber das liegt auch daran, dass ich den Vorteil der Verwendung von String.Empty nicht verstehe. Muss eine Unicode-Sache sein, aber ich muss mich nie darum kümmern (zumindest noch nicht ... yikes) – Dave
Ich bin verwirrt, warum du denkst, dass du das * brauchst *. Ich halte 'nullString' für einen verwirrenden Namen, weil ich auf den ersten Blick geneigt wäre zu denken, es sei 'null', nicht '' ''. Was Ihre letzte Frage betrifft, siehe [ Warum ist String.Empty keine Konstante? ] (http://stackoverflow.com/questions/507923/why-isnt-string-empty-a-constant). @Dave, hier gibt es keine Unicode-Sache. "" "ist in Ordnung; siehe auch [ In C#, sollte ich string.Empty oder String.Empty oder "" verwenden? ] (http://stackoverflow.com/questions/263191/in-c-should-i-use-string-empty-or-string-empty-or). –
Bitte erwähnen Sie die Version. – PrateekSaluja