如果hasSecond == false
,我想写
myString = string.Format(CultureInfo.InvariantCulture,
"{0}",
"first");
如果hasSecond == true
,我想写
myString = string.Format(CultureInfo.InvariantCulture,
"{0}{1}",
"first",
"second");
如何将它们组合在一起?
例如,通过使用条件表达式,以下似乎不起作用,因为它不会使第四个参数成为可选:
myString = string.Format(CultureInfo.InvariantCulture,
"{0}" + (hasSecond == true ? "{1}" : string.Empty),
"first",
hasSecond == true ? "second" ; string.Empty);
hasSecond==false
时,它变为
myString = string.Format(CultureInfo.InvariantCulture,
"{0}" + string.Empty,
"first",
string.Empty);
我们只有一个占位符{0}
,同时有两个参数"first"
和string.Empty
来填充它。
答案 0 :(得分:4)
myString = string.Format(CultureInfo.InvariantCulture,
"{0}{1}",
"first",
hasSecond ? "second" : string.Empty);
这应该有效
答案 1 :(得分:1)
正如我在评论中写的那样,第二个if条件是不必要的,因为如果变量有正确的占位符,变量只会出现在字符串中。
在这种情况下,第二个变量不会以字符串结尾:
static void Main(string[] args)
{
double var1 = 99.9;
double var2 = 99.1;
bool condition = false;
string res = string.Format(CultureInfo.InvariantCulture, "{0}" + (condition ? "{1}" : string.Empty), var1, var2);
Console.WriteLine(res);
Console.ReadLine();
}
修改强>
比较Answer by Jianping Liu:
我能看到的唯一区别是,如果你有一个更长的字符串,并希望在某些位置插入值,那么最后设置条件可能更方便,并使第二个占位符{1}
保持在所有位置例:
string res = string.Format(CultureInfo.InvariantCulture,
"The measurement revealed a value of: {0}{1} bla bla",
var1, condition ? " which strongly depends on the value of: " + var2 : string.Empty);
比较:
string res = string.Format(CultureInfo.InvariantCulture,
"The measurement revealed a value of: {0}" +
(condition ? " which strongly depends on the value of: {1}" : string.Empty) +
" bla bla", var1, var2);
但我想这对你来说更具可读性是一个品味问题。
答案 2 :(得分:0)
string value = $"{first}{hasSecond ? second : string.Empty}";