方法中的可选参数不是使用Rectangle编译时常量错误

时间:2012-08-27 17:54:24

标签: c# compiler-errors optional-parameters

我有一个方法,我想使用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。)

2 个答案:

答案 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类型。