I am curious to know that whether optional parameter introduced in C#4 is backward compatible or not?
Let me clarify my question with a simple example. Suppose I write the following code in C#4 on .Net2 in VS2010:
public void Foo(int val1, int val2, int val3 = 5){ .... }
Now I compiled the code, make a dll and reference it to a C#2 / C#3 project on .Net2. In the code editor (other than VS2010, say VS2008) what I'll see in intellisense?
Two overloaded methods like:
public void Foo(int val1, int val2) public void Foo(int val1, int val2, int val3)
Something else like:
public void Foo(int val1, int val2, int val3) public void Foo(int val1, int val2, int val3 = 5) //VS2008 is not supposed to show this
How I am supposed to call the C#4 method in C#2 project?