2010-02-14 7 views
6

मैं निम्नलिखित कोड है:हो रही कोड संविदा दृश्य स्टूडियो में काम 2010

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(SqrtRoot(0)); 
     Console.WriteLine(SqrtRoot(10)); 
     Console.WriteLine(SqrtRoot(-10)); 
     Console.ReadKey(); 
    } 

    public static int SqrtRoot(int i) 
    { 
     Contract.Requires(i >= 0); 
     return (int)Math.Sqrt(i); 
    } 
} 

मैं इसे डिबग मोड में चला रहा हूँ, और यह अंतिम पंक्ति में त्रुटि किसी तरह का सक्रिय किया जाना चाहिए

Console.WriteLine(SqrtRoot(-10)); 

पूरी तरह से, किसी कारण से, यह नहीं है। ऐसा लगता है कि अनुबंध को अनदेखा करता है। (कॉल)। क्या मुझे कोड अनुबंधों का उपयोग करने की कोशिश करते समय कुछ स्थापित करना चाहिए?

मैं विजुअल स्टूडियो 2010 आरसी का उपयोग कर रहा हूं।

धन्यवाद

उत्तर

2

मुझे लगता है कि टैब नहीं है या तो, लेकिन मैं एक समाधान मिला:

Contract.Requires<ArgumentOutOfRangeException>(i >= 0); 

शायद कोड ठेके पैकेज स्थापित किया जाना चाहिए लेकिन डाउनलोड लिंक काम नहीं कर रहा है। http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

+0

यदि i = 0, i = 10 और i = -10 के मानों के लिए यह त्रुटि उत्पन्न होगी। मुझे यह नहीं मिला। –

+0

मैंने अभी अनुबंध के साथ कोशिश की है। (i> = 0) की आवश्यकता है; और अब जीना बाहर नहीं है। शायद आपको अपवाद प्रकार देना होगा क्योंकि विक्टर सुझाव देता है। –

+0

एचएम ... आप सही हैं। कुछ ठीक नहीं चल रहा है ... भले ही अनुबंधों का डिफ़ॉल्ट व्यवहार एक त्रुटि फेंकना और खिड़की प्रदर्शित करना है। –

0

मुझे लगता है कि आप इस परियोजना सेटिंग्स में जाँच क्रम अनुबंध सक्षम करने के लिए (वहाँ एक "कोड संविदा" फलक होना चाहिए ...)

देखें user documentation अधिक जानकारी के लिए (धारा 6) ।

+2

मैंने इसके बारे में सोचा था, लेकिन मुझे परियोजना के विकल्पों पर कहीं भी नहीं मिल रहा है। –

5

आपको विजुअल स्टूडियो एकीकरण स्थापित करने की आवश्यकता है। जबकि CodeContracts लाइब्रेरी स्वयं .NET 4 का हिस्सा है, वास्तव में लाइब्रेरी का सही ढंग से उपयोग करने के लिए कोड कोड अनुबंध रीराइटर (ccrewrite) द्वारा आपके कोड को फिर से लिखना होगा।

DevLabs site से इंस्टॉलर डाउनलोड करें।

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