c#方法的参数重载
本文关键字:重载 参数 方法 | 更新日期: 2023-09-27 18:17:15
请帮忙!
我做错了什么?
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);
,我得到编译时错误。
如果我确实需要这些方法签名,如何克服这个问题?
EDIT:对于Compile-tme错误- ReSharper抱怨:
无法解析方法f1(null,int),候选方法有:
空白f1 (Syste.Drawing。Color, params[] float)
空白f1 (Syste.Drawing。Color, params[] int)
我认为问题是你正在传递null的颜色,这可能会扰乱功能,要么改变为Color?
(因为它是一个结构体)或传递一个有效的颜色值
static void f1(Color? color, params float[] f)
static void f1(Color? color, params int[] f)
您不能传递null来代替struct参数,即您的示例中的Color。问题不在于参数。一些有效的调用会像;
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"
如果Color为System.Drawing.Color
,则参数color
不能为空。如果你想让color
为空,使用Color?
type
f1(Color.Black, 0) // works
f1(null, 0) // Doesn't work
你需要在Color参数中传递System.Drawing.Color Object not null
首先,您不能为Color参数使用null。要使用这两种代码中的一种,对int使用以下代码:
f1(SystemColors.ActiveBorder, new int[]{0});
或this for floats:
f1(SystemColors.ActiveBorder, new float[]{0});
你使用它的方式它总是调用int版本