C# 3.5 partielle Klasse String IsNullOrWhiteSpace
Ich versuche zu erstellen, die zusätzliche Funktionen, um die String
Klasse (IsNullOrWhitespace
als in .NET4 )
Aber ich habe ein problem mit der Referenzierung:
Fehler 1 'String' ist ein Mehrdeutiger Verweis zwischen 'string' und 'geolis_export.Klassen.String'
Ich nicht wollen, erstellen Sie eine extension-Methode. Da diese zum Absturz bringen, wenn string x = null;
Verwendung:
private void tbCabineNum_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !e.Text.All(Char.IsNumber) || String.IsNullOrWhiteSpace(e.Text);
}
String partial:
public partial class String
{
public static bool IsNullOrWhiteSpace(string value)
{
if (value == null) return true;
return string.IsNullOrEmpty(value.Trim());
}
}
Ist es nicht möglich zu erstellen extras für die String
Klasse?
Ich habe versucht, die teilweise in den System
namespace, aber dies gibt anderen Fehler.
Umbenennen String
zu String2
behebt das problem auch. Aber das ist nicht das, was ich will, denn dann gibt es keine Referenz, die mit der ursprünglichen String
Klasse.
Because this will crash if "string x = null;"
- überprüfen Sie Ihre Fakten zuerst; Darüber hinaus blind zu wiederholen, dass-Anweisung in eine perfekte Antwort beleidigt die Intelligenz der person, die Ihnen hilft. Das war einfach für Sie, um zu testen ersteInformationsquelleAutor Stinus | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, denn die
string
- Klasse in der .NET framework ist nicht parteiisch.Verwenden Sie stattdessen eine echte Erweiterung Methode wie diese:
Die Nutzung würde dann wie folgt Aussehen:
Als mit allen extension-Methoden, wird der Anruf nicht in eine null-Verweis-Ausnahme, wenn die Zeichenfolge
null
:Den Grund für dieses Verhalten ist, dass der compiler übersetzt diesen code in IL-code ist äquivalent zu dem IL-code der folgende:
static
Klasse und haben nurstatic
Methoden. Auch Sie müssen akzeptieren, einethis String
parameter als erstes argument an die Methode (vorausgesetzt, Sie sind die VerlängerungString
).Sollten Sie keine true zurück, wenn der string null ist?
+1 als Erweiterung Methoden sind der Weg zu gehen.
Nein, wird es nicht. Siehe den letzten Teil meiner Antwort. @Chris: ja, du hast Recht, ich habe gerade kopiert den Teil aus dem OPs-code. Behoben.
InformationsquelleAutor Daniel Hilgarth
Erweiterung Methode wird definiert als ein statische Methode innerhalb einer statische Klasse. Beachten Sie auch die
this
keyword auf die parameter.Was Sie getan haben, durch das weglassen der
static
auf die Klasse definieren, die eine konkurrierende Klasse innerhalb der assembly, daher auch der mehrdeutige Meldung vom compiler.InformationsquelleAutor Anthony Pegram
Den
string
Klasse ist nicht erklärt teilweise, Sie haben zu schreiben, eine Erweiterung Methode statt.InformationsquelleAutor BrokenGlass
InformationsquelleAutor Ritch Melton
Um eine extension-Methode, müssen Sie die folgende syntax verwenden. (Beachten Sie die Verwendung des Schlüsselworts
this
):InformationsquelleAutor Jonathan Wood
Das ist nicht, wie man erstellen Sie eine extension-Methode. Die Klasse ist nicht eine partielle, es muss eine statische Klasse und es benannt werden kann, etwas (MyExtensionMethods). Sie müssen auch markieren Sie Ihre parameter mit "dieser" auf eine Erweiterung Methode.
Versuchen, diese stattdessen
InformationsquelleAutor viggity