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.asyncadds types pre-4.5 frameworks allowingasync/awaitused
- 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,
Comments
Post a Comment