2013-07-25 3 views
1

pourquoi cette chose étrange arrive que lorsque je tente d'écrire char[] word à une console viaWriteLine char [] + quelque chose

Console.WriteLine(word); 

Je suis un résultat correct, mais quand j'écris

Console.WriteLine(word + " something"); 

I obtenir "System.Char[] quelque chose"?

Répondre

3

Cela se produit parce que votre première tentative est en train d'écrire un char array, que Console.WriteLine accepte comme entrée valide en utilisant une surcharge.

Console.WriteLine(word); 

Mais votre deuxième résultat apparaît mal parce que vous regroupez un char[] avec une chaîne littérale. Alors Console.WriteLine essaie de rendre votre char[] aussi une chaîne, en faisant ceci:

Console.WriteLine(word.ToString() + " something"); 

Avis appelle .ToString() sur la word (interne) pour en faire un string. La méthode ToString sur le char[] renvoie le type pas sa valeur. Ainsi, vous donnez le résultat impair.

Vous pouvez y remédier en faisant:

Console.WriteLine(new string(word) + " something"); 
1

C'est parce que pour

Console.WriteLine(word); 

son appel de la surcharge WriteLine qui prend char[].

Dans

Console.WriteLine(word + " something"); 

sa vocation ToString() sur word qui se traduit par System.Char[]

Pour la sortie correctement, essayez:

Console.WriteLine(new string(word) + " something"); 
0

La raison pour laquelle il arrive est chaîne opérateur à se comporter + surcharge comme ça. Si vous voulez l'utiliser de cette façon, vous devez d'abord créer une chaîne à partir de votre mot char []. essayer

Console.WriteLine(new string(word) + " something"); 
+0

êtes-vous sûr que 'string (word)' fonctionne? Parce que pour moi, il est dit "Terme d'expression invalide" chaîne "" – user2542809

+0

nouvelle chaîne (mot) devrait – mewa

0

Console.WriteLine() a un overload qui prend char[] en tant que paramètre.

"something" est un string literal, lorsque vous essayez de concaténer string et char[], méthode .ToString() appelle auto.

Essayez ceci à la place;

Console.WriteLine(new string(word) + " something");