Les chaînes interpolées sont l'une des nouvelles fonctionnalités de C # 6.0.
Selon MSDN, la syntaxe des expressions C # incorporées peut contenir une valeur facultative, séparée par des virgules, considérée comme <optional-comma-field-width>
dans documentation .
Malheureusement, je n'ai pas trouvé à quoi sert ce champ.
D'après son nom, on pourrait penser que cette valeur définit la taille maximale du champ "interpolé", mais lorsque j'essaie l'expression suivante:
var p = Process.GetCurrentProcess();
Console.WriteLine($"Process name is {p.ProcessName, 5}");
J'obtiens la sortie suivante:
Process name is LINQPad.UserQuery
C'est la largeur minimale à utiliser pour ce champ, et non la largeur maximale . Étant donné que votre chaîne est plus longue que les 5 caractères que vous spécifiez pour la largeur, le champ est étendu à la longueur de votre chaîne. Vous verrez la différence de façon plus spectaculaire avec une largeur plus longue:
var p = Process.GetCurrentProcess();
$"Process name is {p.ProcessName, 50}".Dump();
rendements:
Process name is LINQPad.UserQuery
Une taille de champ positive est justifiée à droite; une taille de champ négative est justifiée à gauche.
La documentation est meilleure sur la page Formatage composite de MSDN:
Le composant d'alignement facultatif est un entier signé indiquant la largeur de champ formaté préférée. Si la valeur de l'alignement est inférieure à la longueur de la chaîne formatée, l'alignement est ignoré et la longueur de la chaîne formatée est utilisée comme largeur de champ. Les données formatées dans le champ sont alignées à droite si l'alignement est positif et alignées à gauche si l'alignement est négatif. Si un rembourrage est nécessaire, un espace blanc est utilisé. La virgule est requise si l'alignement est spécifié.
Le nombre est le alignement, documenté dans le composant d'alignement ici .
Les données formatées dans le champ sont alignées à droite si l'alignement est positif et alignées à gauche si l'alignement est négatif.
Dans votre exemple, alignement remplira le p.ProcessName
avec des espaces s'il est inférieur à 5
Longs caractères. Lorsque la longueur de la chaîne est inférieure à la valeur absolue de alignement (comme dans votre exemple), alignement n'a aucun effet.
Exemple
var text = "MyText";
Console.WriteLine($"x{text}x");
Console.WriteLine($"x{text, 3}x");
Console.WriteLine($"x{text, 10}x");
Console.WriteLine($"x{text, -10}x");
Résultat
xMyTextx
xMyTextx
x MyTextx
xMyText x