使用内联连接检查IsNullOrEmpty

时间:2018-06-22 18:32:44

标签: c#

我有以下内容:

var result = info.FirstName + " " + "(" + info.PhonNumber + ")";

请注意,名字和电话号码都是字符串值。

我想做的是,如果info.PhonNumber为null / empty,我不想在PhoneNumber周围显示括号。我知道如何使用IsNullOrEmpty方法,在这种情况下,我需要使用 if 语句,但是有没有一种更有效的方法来进行内联验证,以检查info.PhoneNumber是否为空并且没有串联。如果是的话

5 个答案:

答案 0 :(得分:3)

我认为扩展方法更好:

public static string FormatIfNotNull(this string input, string formatString)
{
    if(string.IsNullOrWhiteSpace(input))
        return string.Empty;

    return string.Format(formatString, input);
}

这更可重用和更干净。然后您可以这样称呼它:

var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");

这将导致以下输入/输出

info.FirstName = "Steve";
info.PhonNumber = "123.555.7890";
var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");
//result is "Steve (123.555.7890)"

info.FirstName = "Jerry";
info.PhonNumber = "";
var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");
//result is "Steve"

请注意,由于您的帖子中有错字,因此我保留了错字“ PhonNumber”。

提琴here

答案 1 :(得分:0)

我更喜欢$“”

var result = $"{info.FirstName} {(!string.IsNullOrEmpty(info.PhonNumber) ? $"({info.PhonNumber})" : "")}";

答案 2 :(得分:0)

快速出击:

var result = string.IsNullOrEmpty(info.PhoneNumber) ?
             info.FirstName :
             $"{info.FirstName} ({info.PhoneNumber})";

答案 3 :(得分:0)

您可以按以下方式使用所谓的三元运算符。就像if ... else语句,条件是问号之前的条件,并且else被列替换:

var result = info.FirstName + (string.IsNullOrEmpty(info.PhonNumber) ?  "" : " " + "(" + info.PhonNumber + ")");

答案 4 :(得分:-1)

你的意思是

var result = info.FirstName + 
             (string.IsNullOrEmpty(info.PhonNumber) ?
             string.Empty : ( " (" + info.PhonNumber + ")" ));