उपरोक्त लूप समाधानों के लिए एक समस्या यह है कि सभी सकारात्मक मूल्यों के साथ निम्नलिखित इनपुट सरणी के लिए, योग परिणाम नकारात्मक है:
int[] arr = new int[] { Int32.MaxValue, 1 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Console.WriteLine(sum);
यह राशि -2147483648 है, क्योंकि सकारात्मक परिणाम इंट डेटा प्रकार के लिए बहुत बड़ा है और एक नकारात्मक मूल्य में ओवरफ्लो करता है।
एक ही इनपुट ऐरे के लिए अरेस्ट () सुझाव ओवरफ्लो अपवाद को फेंकने का कारण बनता है।
एक अधिक मजबूत समाधान एक बड़े डेटा प्रकार का उपयोग करना है, जैसे कि "योग" इस मामले में, "योग" के लिए निम्नानुसार है:
int[] arr = new int[] { Int32.MaxValue, 1 };
long sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
एक ही सुधार अन्य पूर्णांक डेटा प्रकारों के संक्षेपण के लिए काम करता है, जैसे कि संक्षिप्त और संक्षिप्त। अहस्ताक्षरित पूर्णांक डेटा प्रकारों जैसे कि uint, ushort और बाइट के सरणियों के लिए, योग के लिए अहस्ताक्षरित लंबे (ulong) का उपयोग ओवरफ़्लो अपवाद से बचा जाता है।
लूप समाधान के लिए भी Linq .Sum () से कई गुना तेज है
और भी तेज चलाने के लिए, HPCsharp नगेट पैकेज इन सभी .Sum () संस्करणों के साथ-साथ SIMD / SSE संस्करणों और मल्टी-कोर समानांतर वाले, कई बार तेज प्रदर्शन के लिए लागू करता है।