Why is string.Split (';') valid but string.Split (':', StringSplitOptions.RemoveEmptyEntries) not?

I am confused that overload is string.Split(';')allowed; I don't think that ';'is a char array?

However, this compilation is OK, but if I try to add a second parameter StringSplitOptions, then the corresponding overload will not be found.

I do not like to do new char []{';'}this, can this be avoided?

+4
source share
2 answers

the first overload String.Split() has parameters defined as

params char [] separator

, char, :

someString.Split('1', '2', '3');
// or just one separator
someString.Split(';');

, ,

char [] , StringSplitOptions

: params. char[]:

someString.Split(new[] {'1', '2', '3'}, StringSplitOptions.None);
// or just one separator
someString.Split(new[] {';'}, StringSplitOptions.None);
+8

:

public string[] Split(params char[] separator)

:

public string[] Split(char[] separator, StringSplitOptions options)

, , .

, :

public static class StringExtensions
{
    public static string[] Split(this string s, char separator, StringSplitOptions options)
    {
        return s.Split(new[] { separator }, options);
    }

//or

    public static string[] Split(this string s, StringSplitOptions options, params char[] separator)
    {
        return s.Split(separator, options);
    }
}

, :

        var s = "asdasd;asd;;";
        var split = s.Split(StringSplitOptions.RemoveEmptyEntries, ';');
        var split2 = s.Split(StringSplitOptions.RemoveEmptyEntries, ';', ',');
        var split3 = s.Split(';', StringSplitOptions.RemoveEmptyEntries);

:

@ groo params:

params , / , , , . , params - , , , . , , Split, , 0, 1 . , , .

+1

Source: https://habr.com/ru/post/1611585/


All Articles