2009-07-17 15 views
5

के साथ जेनेरिक क्लास मैं एक जेनेरिक क्लास बनाना चाहता हूं जो टाइप पैरामीटर लेता है और उस पैरामीटर को संख्यात्मक प्रकारों या अधिक सामान्य रूप से प्रतिबंधित करता है, जिस पर वृद्धि ऑपरेटर ++ लागू किया जा सकता है।प्रतिबंधित प्रकार पैरामीटर

मुझे पता है कि मैं structs तक सीमित करने के लिए निम्नलिखित कर सकता हूं लेकिन स्पष्ट रूप से ऐसे structs हैं जो संख्यात्मक प्रकार नहीं हैं और जिसके लिए ++ ऑपरेटर समर्थित नहीं है। मैं सी # में ऐसा कर सकते हैं

class Example<T> where T : struct 
{ 
    //Implementation detail 
} 
+2

यह अक्सर अनुरोधित सुविधा है। इसे कार्यान्वित करने के लिए भाषा और रनटाइम दोनों में परिवर्तन की आवश्यकता होगी। यह अनुमानित भविष्य के संस्करणों के लिए एक _ संभावनाशीलता है, लेकिन हमारी सर्वोच्च प्राथमिकता होने की संभावना नहीं है। –

+0

संभावित डुप्लिकेट [संख्यात्मक बाधाओं से मेल खाने के लिए सामान्य बाधा] (http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types) – nawfal

उत्तर

8

दुर्भाग्य से यह संभव नहीं है (here देखते हैं।) आप केवल करने के लिए प्रकार विवश कर सकते हैं:

  • एक विशिष्ट इंटरफ़ेस को लागू या एक विशिष्ट वर्ग से निकाले जाते हैं
  • एक class या struct
  • एक parameterless निर्माता हो

विशिष्ट ऑपरेटर रखने के लिए प्रकारों को सीमित करना एक बहुत ही अनुरोधित सुविधा है लेकिन मेरा मानना ​​है कि यह सी # 4 में भी नहीं होगा।

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