我有一个方法,我想使用Rectangle
默认值为 (1,1,1,1) 的可选参数。
void Method(int i, int j = 1, Rectangle rect = new Rectangle(1,1,1,1)) {} //error
我该如何解决这个问题?(我正在使用 XNA,所以它是一个Microsoft.Xna.Framework.Rectangle
。)
我有一个方法,我想使用Rectangle
默认值为 (1,1,1,1) 的可选参数。
void Method(int i, int j = 1, Rectangle rect = new Rectangle(1,1,1,1)) {} //error
我该如何解决这个问题?(我正在使用 XNA,所以它是一个Microsoft.Xna.Framework.Rectangle
。)
你没有。可选参数必须是编译时常量,而new Rectangle(1,1,1,1)
不是编译时常量。
您可以有两种方法重载,一种没有矩形:
void Method(int i, int j = 1)
{
Method(i, j, new Rectangle(1,1,1,1))
}
我刚刚找到了一个更好的方法:
void MyMethod(string someString, Rectangle rect = default(Rectangle))
{
if (rect == default(Rectangle))
rect = new Rectangle(1, 1, 1, 1);
}
可能只有一个问题:当默认值和传递的值匹配时,对于== default(T)
. 但是一种解决方法是通过null
并检查以将其设置为默认值 ot 类型。