相关疑难解决方法(0)

方法重载与C#4.0中的可选参数

哪一个更好?一目了然可选参数似乎更好(代码更少,XML文档更少等),但为什么大多数MSDN库类使用重载而不是可选参数?

当您选择使用可选参数(或重载)时,是否有任何特殊事项需要注意?

.net c# overloading optional-parameters c#-4.0

114
推荐指数
6
解决办法
7万
查看次数

我可以在C#函数中为参数或可选参数赋予默认值吗?

我可以在C#中提供默认参数吗?

在C:

void fun(int i = 1)
{
    printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)

我们可以给参数一个默认值吗?在C#中有可能吗?如果是这样,我们可以避免重载功能吗?

向现有函数添加可选参数始终是一种不好的做法.如果您正在处理一个必须引用具有函数的类并且我们使用可选值更改参数的项目,则可能会抛出一个运行时异常,即找不到该方法.

这是因为我们将考虑如果我们添加一个额外的可选值,如果在许多地方使用该函数,则不需要更改代码.

function Add(int a, int b);
Run Code Online (Sandbox Code Playgroud)

这将使用这种方式调用:

Add(10, 10);
Run Code Online (Sandbox Code Playgroud)

但是如果我们添加这样的可选参数,

function Add(int a, int b, int c = 0);
Run Code Online (Sandbox Code Playgroud)

然后编译器期望

Add(10, 10, 0);
Run Code Online (Sandbox Code Playgroud)

实际上我们这样调用Add(10, 10)并且该函数在该类中不可用并导致运行时异常.

这种情况发生在将一个新参数添加到由很多地方调用的函数时,我不确定每次都会发生这种情况.但我建议你重载这个功能.

我们总是需要重载具有可选参数的方法.此外,如果您正在使用具有多个可选参数的函数,则最好使用参数名称传递该值.

function Add(int a, int b, int c = 0);
Run Code Online (Sandbox Code Playgroud)

使用以下方式调用此函数总是好的.

Add(10, 20, c:30);
Run Code Online (Sandbox Code Playgroud)

c#

68
推荐指数
4
解决办法
12万
查看次数

标签 统计

c# ×2

.net ×1

c#-4.0 ×1

optional-parameters ×1

overloading ×1