比使用条件运算符附加空字符串更好的解决方案

时间:2012-05-15 09:17:06

标签: c# string-concatenation conditional-operator

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

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

当某些值为真时,必须有一种更好的方法来简洁地追加字符串吗?

此:

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

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

5 个答案:

答案 0 :(得分:8)

扩展方法怎么样?

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


public static string AppendIf(this string value, bool expression, string append)
{
    return expression
       ? value + append;
       : value;
}

答案 1 :(得分:6)

为什么不编写自己的扩展方法来执行此操作?

public static string AppendIf(this string value, string toAppend, bool condition)
{
    return condition ? String.Format("{0}{1}", value, toAppend) : value;
}

答案 2 :(得分: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");

答案 3 :(得分:1)

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

如果还有,我还没找到。

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

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

深嵌套? :构造可能很难遵循,特别是如果有多个分叉。

答案 4 :(得分:0)

如何:

string x = someTest ? "foobar" : "foo";