Yukarıdaki for döngüsü çözümleriyle ilgili bir sorun, tüm pozitif değerlere sahip aşağıdaki giriş dizisi için toplam sonucun negatif olmasıdır:
int[] arr = new int[] { Int32.MaxValue, 1 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Console.WriteLine(sum);
Pozitif sonuç int veri türü için çok büyük olduğundan ve negatif bir değere taştığından, toplam -2147483648'dir.
Aynı girdi dizisi için arr.Sum () önerileri, bir taşma istisnasının atılmasına neden olur.
Daha sağlam bir çözüm, aşağıdaki gibi "toplam" için "uzun" gibi daha büyük bir veri türü kullanmaktır:
int[] arr = new int[] { Int32.MaxValue, 1 };
long sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Aynı iyileştirme, kısa ve sbyte gibi diğer tamsayı veri türlerinin toplamı için de işe yarar. Uint, ushort ve bayt gibi işaretsiz tamsayı veri türlerinin dizileri için, toplam için işaretsiz uzun (ulong) kullanmak taşma istisnasını önler.
Ayrıca for döngüsü çözümü, Linq .Sum () 'dan birçok kez daha hızlıdır.
Daha da hızlı çalıştırmak için, HPCsharp nuget paketi, tüm bu .Sum () sürümlerinin yanı sıra SIMD / SSE sürümlerini ve çok çekirdekli paralel sürümleri birçok kez daha hızlı performans için uygular.