3

几乎每天我都会遇到以下形式的代码:

string x = "foo" + (someTest ? "bar" : "");

只有当某个值为真时,肯定有更好的方法来简洁地附加一个字符串?

这个:

string x = "foo";
if (someTest)
    x += "bar";

不满足我的胃口,因为我经常想直接使用字符串(例如作为函数参数),而不是将其存储在变量中。

4

5 回答 5

8

扩展方法呢?

string x = "foo".AppendIf(someTest, "bar");


public static string AppendIf(this string value, bool expression, string append)
{
    return expression
       ? value + append;
       : value;
}
于 2012-05-15T09:24:23.507 回答
6

为什么不编写自己的扩展方法来做到这一点?

public static string AppendIf(this string value, string toAppend, bool condition)
{
    return condition ? String.Format("{0}{1}", value, toAppend) : value;
}
于 2012-05-15T09:25:01.040 回答
3

使用扩展

public static class StringExtensions
{
    public static string AppendIf(this string s, bool condition, string append)
    {            
       return condition ? s + append : s;
    }
}

string x = "Foo";
x.AppendIf(someTest, "bar");

// or even

string y = "Foo".AppendIf(someTest, "bar");
于 2012-05-15T09:27:07.063 回答
1

假设字符串文字也可以是变量:

如果有我还没有找到。

我认为你的两个例子是最好的。

唯一的反对意见是,如果您需要使用带有 stringbuilder 的第二个解决方案而不是串联有条件地添加许多字符串,那么考虑到性能、可读性和可维护性,应该是一个更好的解决方案。

深嵌套?: 构造可能很难遵循,尤其是在有多个分叉的情况下。

于 2012-05-15T09:24:54.237 回答
0

怎么样:

string x = someTest ? "foobar" : "foo";
于 2012-05-15T09:21:02.577 回答