我有一个方法,我想使用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
。)
答案 0 :(得分:8)
你没有。可选参数必须是编译时常量,new Rectangle(1,1,1,1)
不是编译时常量。
你可以有两个方法重载,一个没有矩形:
void Method(int i, int j = 1)
{
Method(i, j, new Rectangle(1,1,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类型。