जैसा कि मैं गणना और गणना () के बीच अंतर देख रहा था , मैंने सोचा कि स्रोत कोड को देखें 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 का उपयोग करते हैं।
—
हंस पैसेंट