请帮助!
我做错了什么?
static void f1(Color color, params float[] f)
{
System.Console.WriteLine("Here is f1 for float");
}
static void f1(Color color, params int[] f)
{
System.Console.WriteLine("Here is f1 for int");
}
static void Main()
{
f1(null,0);
}
我无法调用f1(null,0);
我收到编译时错误。
假设我确实需要这些方法签名,如何克服这些工作人员?
编辑:至于编译错误 - ReSharper抱怨:
无法解析方法f1(null,int),候选者是:
void f1(Syste.Drawing.Color,params [] float)
void f1(Syste.Drawing.Color,params [] int)
答案 0 :(得分:4)
我认为问题是你为Color传递null可能会扰乱函数,要么将其更改为Color?
(因为它是结构)或传递有效的Color值
static void f1(Color? color, params float[] f)
static void f1(Color? color, params int[] f)
答案 1 :(得分:3)
您不能传递null来代替struct参数,即示例中的Color。问题不在于params参数。 一些有效的电话会是这样的;
f1(Color.Black, 0); // prints "Here is f1 for int"
f1(Color.Black, 0f); //prints "Here is f1 for float"
f1(Color.Black, 0, 5, 6, 7); // prints "Here is f1 for int"
f1(Color.Black, 0, 5.4f, 6, 7); //prints "Here is f1 for float"
答案 2 :(得分:2)
如果Color为System.Drawing.Color
,则参数color
不能为空。如果您希望color
可以为空,请使用Color?
类型
f1(Color.Black, 0) // works
f1(null, 0) // Doesn't work
答案 3 :(得分:0)
您需要在Color参数中传递System.Drawing.Color Object not null。
答案 4 :(得分:0)
首先,你不能使用null作为Color参数。 要使用其中一个代码,请使用以下内容:
f1(SystemColors.ActiveBorder, new int[]{0});
或浮动的这个:
f1(SystemColors.ActiveBorder, new float[]{0});
你使用它的方式总是调用int版本。