Ligne continuent de caractères en C#
Nous avons un test unitaire avec la variable qui contient une très longue chaîne.
Question est de savoir comment écrire dans le code, sans avoir de problèmes avec les sauts de ligne ou que le code est difficile à lire.
En VB il y a une ligne de continuer personnage, est-il un équivalent en C#?
- Créer un tableau, puis se joindre à elle.
- Double Possible de Multiligne Littéral de Chaîne en C#
- Mettre la chaîne dans un fichier de ressources.
- ne pas faire ceci: alors, vous êtes effectivement la création de plusieurs chaînes (à l'exécution) qui doivent être concaténées (à l'exécution). Plusieurs chaînes de caractères séparées par un signe plus seront concaténés par le compilateur.
Vous devez vous connecter pour publier un commentaire.
C# vous permettra d'avoir une chaîne répartie sur plusieurs lignes, le terme est appelé
verbatim literal
:Si vous cherchez une alternative à
& _
à partir de visual basic, utilisez le+
à se joindre à vos lignes.Constantes De Chaîne
Suffit d'utiliser la
+
de l'opérateur et de briser la chaîne lisible lignes. Le compilateur va chercher jusqu'à ce que les cordes sont constants et de les enchaîner au moment de la compilation. Consultez le site web MSDN Guide de Programmation C#ici.par exemple
IL_0003: ldstr "This is the opening paragraph of my long string. Which is split over multiple lines to improve code readability, but is in fact, just one long string."
Variables De Chaîne
Noter que lors de l'utilisation chaîne d'interpolation de valeurs de substitution dans votre chaîne, que le
$
personnage doit précéder chaque ligne où une substitution doit être faite:Cependant, ce qui a le rendement négatif conséquence de multiples appels à
string.Format
et de l'éventuelle concaténation des chaînes de caractères (marqué avec***
)Bien que vous pouvez soit utiliser
$@
de fournir une chaîne unique et éviter les problèmes de performances, à moins que l'espace est placé à l'intérieur de{}
(ce qui semble étrange, de l'OMI), ce qui a le même problème que Neil Chevalier de la réponse, car il inclut tous les espaces dans la ligne de pannes:La injecté espace est facile à repérer:
Une alternative est de revenir à
string.Format
. Ici, la chaîne de formatage est une constante unique de par mon début de réponse:Et ensuite évaluée en tant que telle:
Cependant, il peut toujours être difficile de maintenir compte tenu de la séparation de potentiel entre la chaîne de mise en forme et la substitution des jetons.
Mais être prudent, car
Il échappe aussi des choses dans la chaîne
Liées
Vous pouvez utiliser verbatim les littéraux:
Mais l'indentation de la 1ère ligne est délicat/laid.
Vous devez utiliser l'une des manières suivantes:
Dans son excellente réponse, StuartLC cites une réponse à une question connexe, et mentionne que les plaçant des sauts de ligne à l'intérieur de la
{expression}
d'une interpolation de chaîne "qui semble étrange." La plupart serait d'accord, mais la désagréable code source de l'effet peut être atténué quelque peu--et sans runtime conséquences--en utilisant dédié{expression}
blocs qui résoudre àdefault(String)
, qui est,null
(et en particulier la pasString.Empty
).(Même s'ils sont mineurs) ne s'agit pas de gâchis ou de polluer votre expression réelle de contenu, en utilisant à la place un dédié jeton pour ce but. Donc, si vous déclarez une constante, par exemple:
...puis une ligne qui peut être trop long à regarder dans le code source, comme...
...peut être écrit comme ceci.
Ou peut-être vous préférez un autre type de "bizarre" approche à la même chose:
Tous trois exemples de produire la même
string
au moment de l'exécution, qui dans ce cas est tous sur une seule ligne:Stuart suggéré, IL la performance est conservé dans ces deux exemples, en n'utilisant pas
+
pour concaténer des chaînes. Bien que la chaîne de format dans mon nouvel exemple est en effet stocké dans l'ILLINOIS, et donc votre exécutable, null espaces réservés références ne sont pas initialisés, et il n'y a aucun excès des enchaînements ou des appels de fonction au moment de l'exécution. Pour comparaison, voici la IL pour les deux exemples ci-dessus.IL pour premier exemple
IL pour le deuxième exemple
Si vous avez déclaré des variables différentes, alors la suite de la méthode simple: