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