Jas*_*son 8 c# visual-studio-2010
uint
在为C#方法参数中的参数分配默认值时,如下面第一个代码块所示,我看到消息"类型为'int'的值不能用作默认参数,因为没有标准转换键入'uint'",而在为方法体中的uint变量赋值时,它很好.
代码编译; 警告是通过Visual Studio 2010中的红色,波浪形下划线提供的.
void GetHistoricData(uint historyLength = 365)
{
uint i = 365; // this is valid
}
Run Code Online (Sandbox Code Playgroud)
通过使用365U代替365可以轻松解决这个问题,因此:
void GetHistoricData(uint historyLength = 365U)
{
// method body
}
Run Code Online (Sandbox Code Playgroud)
我发现这真的是难以发现的,为什么它是无效的一种分配好解释int
到uint
的参数时,它是有效的这样做的其他地方.任何人都可以帮我解决我想找到的'灯泡'时刻吗?
它为我编译,编译器版本为 4.0.30319.1 和 4.0.30319.17379。
如果您使用的是旧版本或不同的编译器(例如 Mono 编译器),那么我怀疑这只是一个错误。
编辑:如果编译正常(并且我根本无法从编译器中引发警告),那么我怀疑它是某个插件,例如 ReSharper。(我也没有在 ReSharper 中看到它......)
我无法在 VS2010 中重现这一点。
我建议您将代码更新为没有警告的代码,只是为了可读性 - 但如果没有更改,它仍然是有效的代码。