Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# String.Format optional parameters

I want to use string.Format with optional parameters :

public static void Main(string[] args)
{
    // Your code goes here
    // Console.WriteLine(string.Format("{0} {1}", "a", "b"));
    Console.WriteLine(string.Format("{0} {1}", "a"));
}

for exemple the parameter {1} to be optional and to have a default value

Can you help me to do this?

like image 925
Kernel Med Avatar asked Dec 08 '14 17:12

Kernel Med


1 Answers

It depends on what you mean by "optional parameter".

If you want to automatically replace null with a default value, the easiest way to do that is to use the null coalescing operator inside the arguments:

String.Format("{0} {1}", 
              "a",
              someNullableVariableContainingB ?? "default value");

If you want to reuse the same formatting string for multiple String.Format invocations, e.g.

var myFormatString = "{0} {1}";
var string1 = String.Format(myFormatString, "a", "b");
var string2 = String.Format(myFormatString, "a");

then you are out of luck: String.Format will throw an exception if too few arguments are provided, and there's no way to specify an "optional parameter" inside the format string. You will have to use something other than String.Format, for example, a custom method which replaces missing arguments with their intended default values.

like image 180
Heinzi Avatar answered Sep 21 '22 07:09

Heinzi