Count와 Count ()의 차이점 을 살펴보면서 의 소스 코드를 한 눈에 보았습니다 Count()
. checked
키워드가 왜 필요한지 궁금해하는 다음 코드 스 니펫을 보았습니다 .
int num = 0;
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
while (enumerator.MoveNext())
{
num = checked(num + 1);
}
return num;
}
소스 코드 :
// System.Linq.Enumerable
using System.Collections;
using System.Collections.Generic;
public static int Count<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source);
}
ICollection<TSource> collection = source as ICollection<TSource>;
if (collection != null)
{
return collection.Count;
}
IIListProvider<TSource> iIListProvider = source as IIListProvider<TSource>;
if (iIListProvider != null)
{
return iIListProvider.GetCount(onlyIfCheap: false);
}
ICollection collection2 = source as ICollection;
if (collection2 != null)
{
return collection2.Count;
}
int num = 0;
using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{
while (enumerator.MoveNext())
{
num = checked(num + 1);
}
return num;
}
}
2
.NET 4.0에는 아직이 검사가 없었으며 4.5에는 없습니다. WinRT 반복자 에 대한 문제를 피하기 위해 이것이 수행되었을 가능성이 약간 있습니다. uint를 사용한다는 점에 유의하십시오.
—
Hans Passant