在方法可选参数不编译时常误差矩形(Optional parameter in method not

2019-09-21 18:33发布

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

Answer 1:

你不知道。 可选参数必须被编译的时间常数,和new Rectangle(1,1,1,1)是不是编译时间常数。

你可以有两种方法重载,一个不具有一个矩形:

void Method(int i, int j = 1) 
{
    Method(i, j, new Rectangle(1,1,1,1)) 
}


Answer 2:

我只是找到了一个更好的办法:

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

有可能只有一个问题:当默认,并通过值匹配,它仍然将是真正的== default(T) 但是,一个解决办法是通过null ,再检查所将其设置为默认值OT型。



文章来源: Optional parameter in method not compile-time constant error with Rectangle