Ani*_*jee 9 .net c# optional-parameters visual-studio-2010 visual-studio-2008
我很想知道C#4中引入的可选参数是否向后兼容?
让我用一个简单的例子来澄清我的问题.假设我在VS2010中的.Net2上的C#4中编写以下代码:
public void Foo(int val1, int val2, int val3 = 5){ .... }
Run Code Online (Sandbox Code Playgroud)
现在我编译代码,制作一个dll并将其引用到.Net2上的C#2/C#3项目.在代码编辑器中(VS2010除外,比如说VS2008)我会在intellisense中看到什么?
两个重载方法,如:
public void Foo(int val1, int val2)
public void Foo(int val1, int val2, int val3)
Run Code Online (Sandbox Code Playgroud)其他的东西:
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
Run Code Online (Sandbox Code Playgroud)我应该如何在C#2项目中调用C#4方法?
Jon*_*eet 10
它只是一种方法--C#编译器不会创建重载.就像你在调用VB.NET中使用可选参数创建的方法一样 - 它们从一开始就在.NET中.只是C#2编译器不知道如何处理它们,所以你必须自己指定所有的参数.
基本上可选参数只会改变方法的调用方式.如果有这样的方法:
public void Foo(int x = 10, int y = 20)
Run Code Online (Sandbox Code Playgroud)
你这样称呼它:
Foo(15);
Run Code Online (Sandbox Code Playgroud)
C#4编译器将调用端更改为:
Foo(15, 20);
Run Code Online (Sandbox Code Playgroud)
C#2编译器不能这样做,因此您必须指定两个参数.
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |