2010-03-02 18 views

उत्तर

14

आप checked का उपयोग एक अभिव्यक्ति में एक (मूक) अतिप्रवाह से बचने के लिए होगा।
और unchecked का उपयोग करें जब आप जानते हैं कि हानिरहित अतिप्रवाह हो सकता है।

आप उन दोनों जगहों पर उपयोग करते हैं जहां आप डिफ़ॉल्ट (प्रोजेक्ट-वाइड) कंपाइलर सेटिंग पर भरोसा नहीं करना चाहते हैं।

दोनों रूपों में बहुत दुर्लभ हैं, लेकिन महत्वपूर्ण पूर्णांक अंकगणित करते समय यह संभव अतिप्रवाह के बारे में सोचने लायक है।

भी ध्यान रखें कि वे दो प्रकार के होते:

x = unchecked(x + 1); // (expression) 
unchecked { x = x + 1;} // { statement(s) } 
3

The checked and unchecked operators

से जाँच की और अनियंत्रित ऑपरेटरों अभिन्न प्रकार अंकगणितीय आपरेशनों और रूपांतरण के लिए अतिप्रवाह जाँच संदर्भ नियंत्रित करने के लिए उपयोग किया जाता है।

एक जाँच संदर्भ में, अगर एक अभिव्यक्ति गंतव्य प्रकार की सीमा के बाहर है कि एक मूल्य पैदा करता है, परिणाम है कि क्या अभिव्यक्ति निरंतर या गैर स्थिर है पर निर्भर करता है। निरंतर अभिव्यक्ति संकलन समय त्रुटियों का कारण बनती है, जबकि गैर-निरंतर अभिव्यक्तियों का मूल्यांकन रन समय पर किया जाता है और अपवाद उठाते हैं।

एक अनियंत्रित संदर्भ में, अगर एक अभिव्यक्ति है कि है गंतव्य प्रकार की श्रेणी से बाहर एक मूल्य पैदा करता है, परिणाम काट दिया गया।

checked, unchecked

+1

ठीक है, यही वह है .. क्या आप इसे कब करना चाहते हैं? – NotMe

6

checked की मदद से आप System.OverFlowException जो किसी का ध्यान नहीं जाना होगा लेने के लिए अन्यथा

int result = checked (1000000 * 10000000); 
    // Error: operation > overflows at compile time 

int result = unchecked (1000000 * 10000000); 
    // No problems, compiles fine 
3

checked बनाम unchecked भी करने में उपयोगी है उन समय जब आप पूर्णांक गणित कर रहे हैं। विशेष रूप से बढ़ते संचालन और आप जानते हैं कि आप पिछले UInt32.MaxValue में वृद्धि करेंगे, और इसे 0 पर हानिरहित रूप से ओवरफ़्लो करना चाहते हैं।

संबंधित मुद्दे