오늘은 문제가 발생하여 설명 할 수 없습니다. 메서드를 호출하는 작업이 있지만 정수 매개 변수가 값 형식처럼 처리되지 않는 것 같습니다.예기치 않은 동작의 작업 및 .NET의 정수
나는 간단한 설정에서 재현 할 수 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Start();
}
private static void Start()
{
int numberThreads = 3;
for (int i = 0; i < numberThreads; i++)
{
if (i == 3)
{
// Never gets hit
System.Diagnostics.Debugger.Break();
}
Task.Run(() => DoWork(i));
}
}
private static void DoWork(int index)
{
if (index == 3)
{
// index = 3
System.Diagnostics.Debugger.Break();
}
}
}
}
은, DoWork의 (인덱스 == 3)() 항상 true (I == 3) 시작에서() 결코 사실의 유효성을 확인하지 않습니다. 어떻게 가능합니까?
'if (i == 3)'이 (가) 왜 안 맞았는지 알고 싶습니까? 그것은 for 루프가 0에서 시작하기 때문입니다. for (int i = 1; i
RandomStranger
도움이되지 않습니다 - 조건을'<'에서'<='으로 변경해야합니다. –
@James, 네, 그건 이상한 것입니다. – FrankyHollywood