Pourquoi est new String(“Bonjour”) invalide en C#?

Quelle est la logique/raison derrière la prise de

String s= new String("Hello World");

Illégale en C#?
L'erreur est

La meilleure méthode surchargée de match pour la `chaîne de caractères.Chaîne de caractères(char*)' a certains arguments non valides

Je ne suis pas intéressé dans les docs de l'API, je m'intéresse à pourquoi c'est illégal.

Est en raison de la mise en commun chaînes statiques? comme Java piscines Entier(-128) à l'Entier(127) avec d'horribles résultats? ( bien sûr, les chaînes de trop )

Parce que la classe string contient pas de constructeur prenant un seul argument de type string?
(Java a un new String(String) constructeur, ce qui est le plus utile notamment pour l'enseignement de jouer avec de "nouveaux objets string" et "l'internement des objets string" comme Java, les Chaînes ne pas surcharger == ... de toute façon, depuis Java est, pourquoi ne pas en C#? J'espère que certaines des réponses pourrait essayer de remédier à cela, si c'est adressable pour toute saine raison [autres que ce n'était pas jugé utile/nécessaire].)
Caractéristiques doivent être justifiés sur le rapport coût-avantage. Quel est l'avantage qui justifie le prix? Si il n'y a aucun avantage qui justifie le coût alors il devrait être illégal simplement sur les raisons économiques que nous avons de mieux à faire que de concevoir, spécifier, mettre en œuvre, tester, documenter et de maintenir un constructeur qui ne l'on utilise ou les besoins.
S'il vous plaît ne diffèrent! Qu'est-ce que le fait d'obliger le client de prestations de la "fabrication d'un nouveau ref" pour une chaîne de caractères? Il y a eu des jours où ce que j'cher, c'est "faire une copie clonée de l'état de cette IEnumerator", mais je n'ai jamais une fois, je me suis dit "j'ai besoin d'avoir deux chaînes sont identiques dans tous les sens mais leur adresse, ainsi garanti à prendre jusqu'à deux fois plus d'espace que nécessaire dans la mémoire". Je ne vois pas l'intérêt ici.
Comment est "parce que Java a" dans aucun justification pour une fonction en C#? Fonctionnalités de C# sont justifiés par leurs avantages attrayants pour nos clients. (Et je note que la caractéristique la plus évidente de C# qui est là "parce que Java a" -- de la matrice de covariance -- est profondément brisé et les causes graves, de la performance et de l'exactitude des problèmes.) Je suppose que la Java concepteurs avaient quelque raison de l'ajout de cette fonctionnalité; demandez-leur si vous voulez leur explication. Je ne suis pas un expert Java, donc je n'ai aucune idée de pourquoi Java est une telle fonctionnalité.

OriginalL'auteur Captain Giraffe | 2011-09-30