6

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

4

2 回答 2

8

你没有。可选参数必须是编译时常量,而new Rectangle(1,1,1,1)不是编译时常量。

您可以有两种方法重载,一种没有矩形:

void Method(int i, int j = 1) 
{
    Method(i, j, new Rectangle(1,1,1,1)) 
}
于 2012-08-27T17:56:42.110 回答
1

我刚刚找到了一个更好的方法:

void MyMethod(string someString, Rectangle rect = default(Rectangle))
{
    if (rect == default(Rectangle)) 
        rect = new Rectangle(1, 1, 1, 1);
}

可能只有一个问题:当默认值和传递的值匹配时,对于== default(T). 但是一种解决方法是通过null并检查以将其设置为默认值 ot 类型。

于 2012-12-20T03:12:09.717 回答