簡體   English   中英

字符串內插中的字符串內插

[英]String interpolation inside string interpolation

是否可以使用想要插入的字符串格式的變量。

public class Setting
{
    public string Format { get; set; }
}


var setting = new Setting { Format = "The car is {colour}" };
var colour = "black";
var output = $"{setting.Format}";

預期產量

“汽車是黑色的”。

你不能那樣做。 字符串插值是純粹的編譯時功能。

不,您無法做到這一點,但是您可以通過稍微有點不同的方法來達到相同的效果,我已經喜歡上了:

public class Setting
{
    public Func<string, string> Format { get; set; }
}

然后可以將字符串參數傳遞給Format

var setting = new Setting { Format = s => $"The car is {s}" };
var output = setting.Format("black");

為什么不?
首先,在C#中聲明它之前不能使用局部變量。 因此,在使用colour之前先聲明colour 然后“插入”分配給Format的字符串,您就完成了。

var colour = "black";
var setting = new Setting { Format = $"The car is {colour}" };
var output = $"{setting.Format}";
Console.WriteLine(output);

輸出:

車是黑的。

您可以對其進行一些更改,如下所示:

public class Setting
{
    public string Format
    { 
        get
        {
            return String.Format(this.Format, this.Colour);
        }
        set
        {
            Format = value;
        }
    }

    public string Colour { get; set; }
}


var setting = new Setting { Format = "The car is {0}", Colour = "black" };

然后輸出將是“汽車是黑色的”。

我尚未測試此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM