Here's another link:
http://msdn.microsoft.com/en-us/library/dd264739.aspx
And some relevant example code:
// Instance anotherExample sends an argument for the constructor's
// optional parameter.
ExampleClass anotherExample = new ExampleClass("Provided name");
anotherExample.ExampleMethod(1, "One", 1);
anotherExample.ExampleMethod(2, "Two");
anotherExample.ExampleMethod(3);
// The following statements produce compiler errors.
// An argument must be supplied for the first parameter, and it
// must be an integer.
//anExample.ExampleMethod("One", 1);
//anExample.ExampleMethod();
// You cannot leave a gap in the provided arguments.
//anExample.ExampleMethod(3, ,4);
//anExample.ExampleMethod(3, 4);
// You can use a named parameter to make the previous
// statement work.
anExample.ExampleMethod(3, optionalint: 4);
....
// The first parameter, required, has no default value assigned
// to it. Therefore, it is not optional. Both optionalstr and
// optionalint have default values assigned to them. They are optional.
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)
{
Console.WriteLine("{0}: {1}, {2}, and {3}.", _name, required, optionalstr,
optionalint);
}
5) Suppose you have declared an integer array named scores and you make the following method call:
TotalScores(scores, num : 1);
Of the following overloaded method definitions, which would execute?
a. TotalScores(int[] scores)
b. TotalScores(int[] scores, int num)
c. TotalScores(int[] scores, int num = 10, int code = 10)
d. The program would not compile.
2 answers
b. TotalScores(int[] scores, int num)