다음 코드 는 할당되지 않은 지역 변수 "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
이 요인이 될 줄 은 몰랐습니다 .
out
매개 변수에 전달 된 값 을 입력으로 사용하지 않는다는 것을 알 정도로 똑똑하다고 생각하지 마십시오