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?

  1. Two overloaded methods like:

    public void Foo(int val1, int val2)
    public void Foo(int val1, int val2, int val3)
    
  2. 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?

Edit
Report