相关疑难解决方法(0)

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

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

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

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

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

你应该在C#4.0中使用重载或可选参数声明方法吗?

我正在观看Anders关于C#4.0的讨论和C#5.0的预览,它让我想到C#中何时可以提供可选参数什么是推荐的方法来声明不需要指定所有参数的方法?

例如,FileStream类这样的东西有大约十五种不同的构造函数,它们可以分为逻辑"族",例如下面的字符串,来自a的那些IntPtr和来自a的那些SafeFileHandle.

FileStream(string,FileMode);
FileStream(string,FileMode,FileAccess);
FileStream(string,FileMode,FileAccess,FileShare);
FileStream(string,FileMode,FileAccess,FileShare,int);
FileStream(string,FileMode,FileAccess,FileShare,int,bool);
Run Code Online (Sandbox Code Playgroud)

在我看来,这种类型的模式可以通过改为使用三个构造函数来简化,并使用可以默认的参数的可选参数,这将使构造函数的不同系列更加清晰[注意:我知道这个更改不会是在BCL制作,我正在假设这种情况].

你怎么看?从C#4.0开始,将具有可选参数的紧密相关的构造函数和方法组作为单一方法更有意义,还是有充分理由坚持使用传统的多重载荷机制?

c# overloading optional-parameters c#-4.0

91
推荐指数
6
解决办法
2万
查看次数

默认(CancellationToken)是否等同于CancellationToken.None?

看看CancellationToken.None它的实现,它只是回归default(CancellationToken).但是,我在CancellationToken文档中看不到两者是等价的.

我想提供这样的API,但直到我确定它总能工作:

Task DoSomething(CancellationToken token = default(CancellationToken))
Run Code Online (Sandbox Code Playgroud)

它定义的行为default(CancellationToken)是否相同CancellationToken.None,或者这只是一个实现细节?

.net linq ado.net cancellation-token

28
推荐指数
3
解决办法
8523
查看次数