Cannot use String.Empty as a default value for an optional parameter

前端 未结 8 1607
生来不讨喜
生来不讨喜 2020-12-04 14:47

I am reading Effective C# by Bill Wagner. In Item 14 - Minimize Duplicate Initialization Logic, he shows the following example of using the new opt

8条回答
  •  情深已故
    2020-12-04 15:53

    There's nothing to stop you from defining your own constant for the empty string if you really want to use it as an optional parameter value:

    const string String_Empty = "";
    
    public static void PrintString(string s = String_Empty)
    {
        Console.WriteLine(s);
    }
    

    [As an aside, one reason to prefer String.Empty over "" in general, that hasn't been mentioned in the other answers, is that there are various Unicode characters (zero-width joiners, etc.) that are effectively invisible to the naked eye. So something that looks like "" isn't necessarily the empty string, whereas with String.Empty you know exactly what you're using. I recognise this isn't a common source of bugs, but it is possible.]

提交回复
热议问题