下面的代码会导致在使用中未分配的局部变量“numberOfGroups”:
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
但是,此代码工作正常(虽然, ReSharper的说= 10
是多余的):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
我失去了一些东西,或者编译器不喜欢我||
?
我已经缩小下来到dynamic
造成的问题( options
是在我上面的代码中动态变量)。 现在的问题仍然存在, 为什么我能做到这一点呢 ?
此代码不能编译:
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
dynamic myString = args[0];
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
然而,这段代码 :
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
var myString = args[0]; // var would be string
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
我没想到dynamic
将是这一个因素。