(इसके अलावा posted on the MSDN forum - लेकिन यह है कि अधिक यातायात, जहाँ तक मैं देख सकता हूँ नहीं मिलता है।)क्या संहिता संविदात्मक जांचकर्ता को अंकगणितीय बाध्य जांचने में सक्षम होना चाहिए?
मैं Assert
और Assume
का एक उदाहरण प्रदान करने के लिए कोशिश कर रहा हूँ। यहाँ कोड मैं लिया है:
public static int RollDice(Random rng)
{
Contract.Ensures(Contract.Result<int>() >= 2 &&
Contract.Result<int>() <= 12);
if (rng == null)
{
rng = new Random();
}
Contract.Assert(rng != null);
int firstRoll = rng.Next(1, 7);
Contract.Assume(firstRoll >= 1 && firstRoll <= 6);
int secondRoll = rng.Next(1, 7);
Contract.Assume(secondRoll >= 1 && secondRoll <= 6);
return firstRoll + secondRoll;
}
(एक मौजूदा Random
संदर्भ की बजाय एक अशक्त संदर्भ में पारित करने में सक्षम होने के बारे में व्यापार विशुद्ध रूप से निश्चित रूप से शैक्षणिक, है।)
मुझे लगता है कि अगर आशा व्यक्त की थी चेकर को पता था कि firstRoll
और secondRoll
[1, 6]
श्रेणी में प्रत्येक थे, यह काम करने में सक्षम होगा कि राशि [2, 12]
सीमा में थी।
क्या यह एक अनुचित उम्मीद है? मुझे एहसास है कि यह एक मुश्किल व्यवसाय है, वास्तव में क्या हो सकता है ... लेकिन मुझे उम्मीद थी कि चेकर पर्याप्त स्मार्ट होगा :)
यदि यह अब समर्थित नहीं है, तो क्या कोई यहां जानता है कि यह समर्थित होने की संभावना है निकट भविष्य में?
संपादित करें: अब मुझे पता चला है कि स्थैतिक चेकर में अंकगणित के लिए बहुत जटिल विकल्प हैं। "उन्नत" टेक्स्ट बॉक्स का उपयोग करके मैं उन्हें विजुअल स्टूडियो से बाहर आज़मा सकता हूं, लेकिन जहां तक मैं कह सकता हूं, उनके बारे में कोई अच्छी व्याख्या नहीं है।
जॉन, क्या आपने सीधे DevLabs से लोगों से संपर्क करने का प्रयास किया है? आपको इस पृष्ठ के निचले भाग में सूचीबद्ध टीम के सदस्य मिलेंगे: http://research.microsoft.com/en-us/projects/contracts/ –
और उनका ई-मेल पता codconfb _at_ microsoft _dot_ com है (जैसा कि बताया गया है समान पृष्ठ)। मुझे आपके प्रश्न का उत्तर जानना होगा। –
मैंने सोचा कि यह पहले मंच में प्रश्न पूछने के लिए थोड़ा और विनम्र होगा ... अगर मैं मंचों पर या यहां वापस नहीं सुनता, तो मैं भी ईमेल से पूछूंगा। –