gpt4 book ai didi

用于多行插值的 C# FormattableString 连接

转载 作者:行者123 更新时间:2023-12-03 16:40:22 38 4
gpt4 key购买 nike

在 C#7 中,我尝试使用多行内插字符串与 FormttableString.Invariant 一起使用但字符串连接似乎对 FormttableString 无效。

documentation : FormattableString 实例可能由 C# 或 Visual Basic 中的内插字符串产生。

以下 FormttableString 多行连接无法编译:

using static System.FormattableString;
string build = Invariant($"{this.x}"
+ $"{this.y}"
+ $"$this.z}");

Error CS1503 - Argument 1: cannot convert from 'string' to 'System.FormattableString'



使用没有连接的内插字符串确实可以编译:
using static System.FormattableString;
string build = Invariant($"{this.x}");

如何使用 FormattableString 实现多行字符串连接类型?

(请注意 FormattableString 是在 .Net Framework 4.6 中添加的。)

最佳答案

Invariant 方法需要参数 FormattableString type .
在您的情况下,参数 $"{this.x}" + $"{this.y}"变成 "string" + "string'这将评估为 string类型输出。这就是您收到编译错误 Invariant 的原因期待 FormattableString而不是 string .
您应该为单行文本尝试此操作 -

public string X { get; set; } = "This is X";
public string Y { get; set; } = "This is Y";
public string Z { get; set; } = "This is Z";
string build = Invariant($"{this.x} {this.y} {this.z}");
输出 -

This is X This is Y This is Z


并实现 multiline插值,您可以构建如下所示的 FormattableString,然后使用 Invarient。
FormattableString fs = $@"{this.X}
{this.Y}
{this.Z}";
string build = Invariant(fs);
输出 -

This is X

This is Y

This is Z

关于用于多行插值的 C# FormattableString 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788306/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com