Pourquoi n’y a-t-il pas une surcharge ssortingng.Split (ssortingng)?

Existe-t-il des raisons valables pour lesquelles il n’ya pas de surcharge de Ssortingng.Split qui accepte une chaîne de délimiteur et un texte à scinder?

 ssortingng[] Split(ssortingng delimiter) 

qui pourrait alors être utilisé comme

 ssortingng input = "This - is - an - example"; ssortingng[] splitted = input.Split(" - "); // results in: // { "This", "is", "an", "example" } 

Je sais vraiment que je peux créer facilement une méthode d’extension, mais il doit exister une raison valable pour laquelle cela n’a pas été ajouté.

Veuillez noter que je ne cherche pas de solution pour diviser une chaîne à l’aide d’un délimiteur de chaîne. Je cherche plutôt une explication, pourquoi une telle surcharge pourrait causer des problèmes. C’est parce que je ne pense pas que cela poserait vraiment de problèmes et j’ai beaucoup de difficulté à comprendre pourquoi nous devons passer une ssortingng[] réelle ssortingng[] au lieu d’une simple ssortingng comme délimiteur.

Modification de la question en “Pourquoi le paramètre SsortingngSplitOptions est-il obligatoire lors de l’appel de Ssortingng.Split () avec un argument Ssortingng []?” pourrait fournir une réponse à votre question.

Notez qu’il n’ya pas réellement de surcharge Ssortingng.Split () qui accepte un seul caractère. La surcharge prend un Char [] mais comme il s’agit d’un tableau params, vous pouvez l’appeler avec un seul caractère et il est implicitement converti en un Char []. par exemple

 "1,2,3,4,5".Split(','); 

appelle la même surcharge Split () que

 "1,2,3,4,5".Split(new[] { ',' }); 

S’il y avait une surcharge de Split () qui acceptait un seul argument de Ssortingng [], vous seriez en mesure d’appeler Split en passant un seul argument de chaîne.

Cependant, cette surcharge n’existe pas et SsortingngSplitOptions est obligatoire pour passer un Ssortingng [] à Split. Quant à savoir pourquoi SsortingngSplitOptions est obligatoire, je ne peux que théoriser, mais il se peut que lors de la scission avec une chaîne, la probabilité d’une scission complexe pour l’algorithme à traiter augmente considérablement. Pour fournir les résultats attendus pour ces cas, il est préférable de définir le comportement de la méthode lors de la recherche de plusieurs délimiteurs côte à côte. Par exemple, SsortingngSplitOptions est obligatoire.

Vous pourriez faire valoir que vous pourriez avoir une surcharge Split(Ssortingng, SsortingngSplitOptions) , mais comme l’a mentionné Ilya Ivanov dans la réponse ci-dessus, vous devez vous arrêter quelque part et il existe un moyen parfaitement efficace de passer une seule chaîne.

 ssortingng input = "This - is - an - example"; ssortingng[] splitted = Regex.Split(input," - "); foreach (ssortingng word in splitted) { MessageBox.Show(word); } 

ce n’est pas seulement la matière des espaces, il correspond exactement à votre séparateur de ssortingng , regardez

 ssortingng input = "This,- is,- a,- complicated,- example"; ssortingng[] splitted = Regex.Split(input,",- "); foreach (ssortingng word in splitted) { MessageBox.Show(word); }