gpt4 book ai didi

c# - 是否可以将内插字符串作为参数传递给方法?

转载 作者:太空狗 更新时间:2023-10-29 20:02:42 24 4
gpt4 key购买 nike

我已经开始使用Interpolated Strings (C# 6 的新特性)它真的很有用而且优雅。但是根据我的需要,我必须将字符串格式作为参数传递给方法。类似下一个:

MyMethod(string format)

以前我是这样用的:

MyMethod("AAA{0:00}")

现在我尝试了这段代码:

MyMethod($"AAA{i:00}")

但这不起作用,因为 i 是在方法内部创建的,超出了此上下文的范围。

是否可以使用任何技巧将内插字符串作为参数传递给方法?

最佳答案

你不能这样做,这也不是一个好主意——这意味着你正在使用另一种方法的局部变量。
这将违背此功能的目的 - 让编译器可验证字符串插值和绑定(bind)到局部变量。

C# 有几个不错的选择。例如,使用 Func:

public void MyMethod(Func<int,string> formatNumber)
{
int i = 3;
var formatted = formatNumber(i);
}

用作:

MyMethod(number => $"AAA{number:00}");

这比您现在拥有的要好 - 您现在拥有格式字符串及其在不同地方的用法。

如果您有多个变量,这种方法可以扩展,但考虑将它们分组到一个类(或结构)中 - func 看起来会好得多,并且您的代码将更具可读性.此类还可以覆盖 .ToString(),这可能对您有用。

另一个简单的选择是只传递格式:MyMethod("00")i.ToString(format),但这只适用于您可能简化的示例.

关于c# - 是否可以将内插字符串作为参数传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987232/

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