如何返回字符串 "test" ,我正在使用 ?? 运算符

26 浏览
0 Comments

如何返回字符串 "test" ,我正在使用 ?? 运算符

我发现自己越来越多地使用一个条件运算符来检查字符串是否为空(即""或null)。

一个当前的例子:

s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber;

这只是一个扩展方法,它相当于:

string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber;

由于它是空的而不是null,所以??不能解决问题。一个string.IsNullOrEmpty()版本的??将是完美的解决方案。我想肯定有更简洁的方法来做到这一点(希望如此!),但我一直找不到。有人知道更好的方法来做到这一点吗,即使只在.NET 4.0中?

0
0 Comments

问题的原因是作者想要返回字符串 "test",并且使用了 ?? 运算符。然而,在以上提供的代码和讨论中,并没有涉及到如何使用 ?? 运算符来返回字符串 "test"。

解决方法是作者提供了一个名为 "Coalesce" 的方法,该方法接受一个字符串数组作为参数,并返回数组中第一个非空的字符串。通过调用该方法,并将需要检查的字符串作为参数传递给该方法,可以实现返回字符串 "test" 的目的。

以下是作者给出的示例代码:

private static string Coalesce(params string[] strings)
{
    return strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));
}
string result = Coalesce(s.SiteNumber, s.AltSiteNumber, "No Number");

另外,还有一种更简洁的编写该方法的方式:

static string Coalesce(params string[] strings) => strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));

这种方式更加简洁,但需要注意的是,需要在代码中引入 System.Linq 命名空间。

以上讨论提供了一种使用 Coalesce 方法返回字符串 "test" 的方法,并且展示了如何使用 ?? 运算符来实现该功能。这是一种简洁而优雅的解决方案。

0
0 Comments

在C#中,没有内置的方法可以直接使用"???"运算符返回字符串。然而,可以创建一个扩展方法来返回字符串或null,从而使得合并运算符可以使用。但是,这可能会有些奇怪,我个人更喜欢目前的方法。

既然已经在使用扩展方法,为什么不创建一个返回值或默认值的方法呢?例如:

string result = s.SiteNumber.ConvertNullOrEmptyTo("No Number");

我认为你是对的,这是目前最干净且可读性最高的解决方案。不过,我希望在C# 5中能有一个"???"运算符,谁知道呢。

那么"???"运算符会做什么?除了处理null值,它还会处理默认值吗?听起来非常复杂。

也许可以使用lambda表达式来实现?例如:假设"item"是可为空的,那么...

item ?? x => x.ToString() : null;

但是这看起来比原始代码更乱。

我更喜欢一个名为"ReplaceNullOrEmptyBy()"的方法,因为它不是转换。但是该概念本身有一个缺点:如果需要将`string?`变量替换为另一个或多个链接的`string?`变量,最终再替换为字符串文字,这种方法将无法工作。链接的调用将再次创建出现空值的警告。

0
0 Comments

有时候在C#中,我们希望将空字符串转换为null,并返回特定的字符串。为了实现这个目的,我们可以使用C#提供的??运算符来代替null值。然而,C#并没有提供将空字符串转换为null的方法。因此,我们可以通过创建一个扩展方法来实现这个功能。

我们可以创建一个名为StringExtensions的扩展类,并在其中定义一个名为NullIfEmpty的静态方法。这个方法接受一个字符串作为参数,如果字符串为空或者为空字符串,则返回null;否则返回原始字符串。另外,我们还可以定义一个名为NullIfWhiteSpace的方法,用于将空白字符串转换为null。

在使用上述扩展方法时,我们可以通过调用字符串变量的NullIfEmpty方法来将空字符串转换为null。然后,我们可以使用??运算符来指定在字符串为null时返回的特定字符串。

这种方法的优点是更加自我解释性,可以更清晰地表达我们的意图。因此,这种做法受到了广泛的支持。

以下是完整的代码实现:

public static class StringExtensions
{
    public static string NullIfEmpty(this string s)
    {
        return string.IsNullOrEmpty(s) ? null : s;
    }
    public static string NullIfWhiteSpace(this string s)
    {
        return string.IsNullOrWhiteSpace(s) ? null : s;
    }
}
string s = "";
string result = s.NullIfEmpty() ?? "No Number";

通过上述代码,我们可以将空字符串s转换为null,并返回特定的字符串"No Number"。这样,我们就解决了从空字符串返回特定字符串的问题。

0