Undokumentierte Überladung von string.Split ()?

7

Laut Intellisense und MSDN-Dokumentation für string.Split , dort sind keine parameterlosen Überladungen von string.Split. Aber wenn ich

eintippe %Vor%

Es kompiliert. Und es funktioniert. Ich habe dies in Visual Studio 2008 und 2010 verifiziert. In beiden Fällen zeigt Intellisense die parameterlose Überladung nicht.

Gibt es einen Grund dafür? Gibt es weitere fehlende Überladungen aus den MSDN / Intellisense-Dokumenten? In der Regel kann ich mithilfe von Überladungen in IntelliSense herausfinden, welche Überladung zu verwenden ist. Ich hasse es zu denken, dass ich andere verfügbare Optionen im gesamten .Net-Framework vermisse.

EDIT: wie oben gezeigt, teilt es sich auf Leerzeichen.

    
Neil N 25.05.2010, 16:45
quelle

6 Antworten

16

Das liegt daran, dass Split eine Params-Überladung hat. Keine Parameter zu geben ist dasselbe wie ein leeres Array zu geben. Mit anderen Worten, Sie rufen diese Überladung auf.

%Vor%

Ist das Gleiche wie:

%Vor%

Hier ist die Dokumentation zum params-Schlüsselwort . Wie Sie wahrscheinlich wissen, wird es verwendet, um einer Methode eine variable Anzahl von Parametern zu geben. Diese Zahl kann Null sein.

    
driis 25.05.2010, 16:49
quelle
8

Ich wette, es passt zu diesem String.Split overload:

%Vor%

0 Argumente sind für diese Funktion akzeptabel. Wenn keine Trennzeichen angegeben werden, wird standardmäßig Leerraum verwendet .

    
Paul Williams 25.05.2010 16:50
quelle
5

Was Sie hier aufrufen, ist string.Split (params char [] separator)

Parameter (C # -Referenz)

Sie können eine durch Kommas getrennte Liste von Argumenten des in der Parameterdeklaration angegebenen Typs oder ein Array von Argumenten des angegebenen Typs senden. Sie können auch keine Argumente senden .

    
Andrey Taptunov 25.05.2010 16:50
quelle
3

Es hat etwas damit zu tun, Parameter als 'params array []' auszusetzen. Sehen Sie sich die Signatur der folgenden Methode an, die in MSDN dokumentiert ist, also übergeben Sie offensichtlich ein leeres Array.

%Vor%     
Roberto Hernandez 25.05.2010 16:51
quelle
2

String.Split() hat eine Reihe von Überlastungen; Sie haben Recht, dass keine dieser Überladungen parameterlos ist, einer davon ist jedoch varadisch: String.Split(params char[]) . Der Teil der Argumentliste mit variabler Länge kann eine beliebige Anzahl von Argumenten enthalten, einschließlich null - das ist die Überladung, die Sie hier auslösen.

    
Josh Petrie 25.05.2010 16:50
quelle
1
%Vor%

params ist 0 oder mehr

    
Sky Sanders 25.05.2010 16:50
quelle