当在C#方法参数中为uint
参数指定默认值时,如下面的第一个代码块所示,我得到消息“一个类型为'int'的值不能用作默认参数,因为存在没有标准的转换来键入'uint'“,而当在方法体中为一个uint变量分配一个int时,它是没问题的。为什么将一个整数值赋给C#方法参数中的一个uint参数是无效的?
该代码确实编译;该警告是由红色的方式提供,在Visual Studio中的波浪下划线2010
void GetHistoricData(uint historyLength = 365)
{
uint i = 365; // this is valid
}
这是很容易解决的,通过代替365使用365U,即:
void GetHistoricData(uint historyLength = 365U)
{
// method body
}
我发现它真的很难找到一个很好的解释,为什么在其他地方有效的时候在参数中指定int
到uint
是无效的。任何人都可以帮我用我想找到的'灯泡'时刻吗?
红色下划线应该表示您无法编译。你有没有尝试重新启动VS? – Tsabo 2012-03-15 11:03:47
我相信这是特定于您的设置:警告不显示在我的代码与“红色,波浪下划线”。 – 2012-03-15 11:05:12
当下划线突出显示时,Visual Studio重新启动引发ReSharper显示其左侧灯泡,表明这只是ReSharper警告中的一个。 – Jason 2012-03-15 11:08:26