MSDN's VS2010 Named and Optional Arguments (C# Programming Guide) tells us about optional parameters in C#, showing code like I'd expect:
public void ExampleMethod(int required
, string optionalstr = "default string"
, int optionalint = 10)
Ok, but it also says:
You can also declare optional parameters by using the .NET OptionalAttribute class. OptionalAttribute parameters do not require a default value.
I read MSDN's OptionalAttribute page, and done searches online (which shows lots of people claiming OptionalAttribute parameters can't be consumed by C# -- I'm guessing these comments were made before C# 4?), but I can't find the answer to two questions:
If I use OptionalAttribute to define a C# parameter as optional:
- what value will be used if I call that method and don't specify that attribute?
- will that value be evaluated at compile time or runtime?