Kha*_*laf 8 c# optional-parameters
快速问题:
" 可选参数使您可以省略某些参数的参数.这两种技术都可以与方法,索引器,构造函数和委托一起使用."
所以不是这样的:
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 }
}
Run Code Online (Sandbox Code Playgroud)
我应该能够做到这一点:
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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
那为什么这不起作用:
public MyClass(double _x = null, double _y = null, double _z = null, Color _color = null)
{
// ..
}
Run Code Online (Sandbox Code Playgroud)
告诉我:
"null"类型的值不能用作默认参数,因为没有标准转换来键入"double"
Dav*_*d L 11
double是一种值类型.您需要将其包装Nullable<T>或?用于速记,以表明它可以为空.
public MyClass(double? _x = null, double? _y = null, double? _z = null, Color _color = null)
{
// ..
}
Run Code Online (Sandbox Code Playgroud)