char
est un type de la valeur, du sens qu'il a une valeur numérique (son Unicode UTF-16 ordinale). Cependant, il n'est pas considéré comme un type numérique (comme int, float, etc) et, par conséquent, l'opérateur + n'est pas défini pour le char.
Le type char peut, cependant, être implicitement converti au numérique de type int. Parce qu'il est implicite, le compilateur est autorisé à procéder à la conversion pour vous, en fonction d'un ensemble de règles de priorité énoncées dans le C# spec. int est l'une des premières choses que normalement essayé. Qui fait le + de l'opérateur valide, et donc c'est l'opération effectuée.
Pour faire ce que vous voulez, vous commencez avec une chaîne vide:
var pr = "" + 'R' + 'G' + 'B' + 'Y' + 'P';
Contrairement à la type char, le type de chaîne définit une surcharge opérateur + pour l'Objet, ce qui transforme le deuxième terme, quel qu'il soit, dans une chaîne à l'aide de ToString() avant de les concaténer pour le premier terme. Cela signifie pas de conversion implicite est effectuée; votre pr
variable est maintenant déduite comme une chaîne de caractères et qui est la concaténation de toutes les valeurs de type caractère.