【发布时间】:2016-11-24 02:44:27
【问题描述】:
快速提问:
MSDN - Named and Optional Arguments (C# Programming Guide) 明确指出
"可选参数使您可以省略某些参数的参数。 这两种技术都可以与方法、索引器、构造器一起使用, 和代表。”
所以不要这样:
class MyClass
{
//..
public MyClass() { // Empty Constructor's Task }
public MyClass(SomeType Param1) { // 2nd Constructor's Task }
public MyClass(SomeType Param1, SomeType Param2) { // 3rd Constructor's Task }
}
我应该可以做到:
class MyClass
{
//..
public MyClass(SomeType Param1 = null, SomeType Param2 = null)
{
if (Param1)
{
if (Param2)
{
// 3rd constructor's Task
}
else
{
// 2nd constructor's Task
}
}
else
{
if (!Param2)
{
// Empty constructor's Task
}
}
}
}
那么为什么这不起作用:
public MyClass(double _x = null, double _y = null, double _z = null, Color _color = null)
{
// ..
}
告诉我:
“null”类型的值不能用作默认参数,因为 没有标准转换类型'double'
【问题讨论】:
-
如果我学到了一件事,那就是反对者永远不会看到这个问题,因为他不会回到你的帖子:D
-
@Vucko 但是像你这样的专业用户会来看它,会知道这是不公平的,因为没有任何问题而且这 IS 很有用,并且支持它;)
-
是的,我认为这是一个很酷的问题,并投了赞成票:D
-
谢谢。现在回到 Android :P @Vucko
-
哈哈,对了,伙计!我也喜欢 C++、C# 和 C,别逼我 :D