c# - Named and Optional Parameters work in .NET 2.0 -


i created console project in visual studio 2010 .net framework 2.0 selected

namespace consoleapp1 {   class program   {     public int add(int a, int b = 0, int c = 0)     {       console.writeline("a " + a);       console.writeline("b " + b);       console.writeline("c " + c);       return + b + c;     }      public static void main()     {       program o = new program();       console.writeline(o.add(10));       console.writeline(o.add(10, 10));       console.writeline(o.add(10, 10, 10));       console.writeline(o.add(b: 20, a: 10));       console.readline();     }   } } 

it works successfully.

however same code if type in visual studio 2008, fails!.

could please me issue named , optional parameters came c#4 ?

daveshaw has explained named/optional parameters. mention (comments) contravariance , covariance - different: covariance , contravariance requires both compiler changes and library changes - ienumerable<t> became ienumerable<out t>, etc. why don't work on older .net versions new compilers.

so basically:

  • if feature want implemented entirely in compiler, work on older .net versions long use newer compiler
  • if feature want requires bcl changes, work on later .net versions
    • unless feature can implemented entirely additional libraries - in particular via extension methods. example, linq-to-objects can work on older .net versions (with newer c# versions) adding linqbridge; similarly, microsoft.bcl.async adds types pre-4.5 frameworks allowing async/await used

Comments

Popular posts from this blog

c# - Operator '==' incompatible with operand types 'Guid' and 'Guid' using DynamicExpression.ParseLambda<T, bool> -