传递空值时如何设置空字符串

时间:2016-12-09 22:56:04

标签: c# .net

好的,所以我是C Sharp的新手,我有一个函数调用可能会发送空值。我想确保如果它为null,那么我应该将那些null设置为空字符串。以下是我尝试过的,但是我认为必须有一种优雅的方法来实现这一点。

public static Concat ()
{ 
        // imagine x = null and y = null
        Abc( x, y);
}

public static Abc ( string x , string y)
{
       // blah blah
        x = x ?? "";
        y = y ?? "";
        efg( x, y);
}

我调查了Solution,但我无法理解。我可以在Abc arguments/parameter本身做些什么。我的意思是

public static Abc ( string x Can I do something here , string y Can I do something here)
    {
           // blah blah
            x = x ?? "";
            y = y ?? "";
            efg( x, y);
    }

3 个答案:

答案 0 :(得分:5)

  

我认为必须有一种优雅的方式来实现这一目标。

??运算符。你找到了。对你好。

  

Abc ( string x Can I do something here

你可以说

public static Abc(string x = "", string y = "")

现在你可以称之为

Abc("a", "b);
Abc("a"); // actually calls Abc("a", "")
Abc();    // actually calls Abc("", "")

但这不会改变传入null时的行为。它允许您省略参数,而不是更改null参数的值。

答案 1 :(得分:0)

不幸的是,C#本身不支持编译时检查,以强制引用类型的非空值,包括string

您可以提供默认值,例如void DoSomething(string x = ""),但这并不妨碍某人用空值覆盖它。

答案 2 :(得分:0)

小改进:

UTF-8

与你已经没有太大的不同。如果public static Abc ( string x , string y) => efg(x ?? "", y ?? ""); 不是?,则someObject?.SomeProperty运算符(如SomeProperty)会返回someObject的值。这不适用于您的示例。