मैं एक साधारण क्लैंप बनाने के लिए कोशिश कर रहा हूँ (ताकि मैं कुछ भी तुलनीय के मूल्यों के लिए बाध्य कर सकते हैं ... ज्यादातर इस तरह के पूर्णांक, डबल, आदि के रूप में संख्या प्रकार के लिए)असंभव जेनेरिक प्रकार IComparable के साथ प्रयोग किया जाता है। क्या यह संभव है?
समस्या है, तो मुझे क्या करना है निम्नलिखित मुझे एक त्रुटि मिलती है, लेकिन according to MSDN आईसीओम्पेर्बल की तुलना करने के लिए शून्य मानों को संभालने में सक्षम होना चाहिए।
उद्धरण: "परिभाषा के अनुसार, कोई वस्तु शून्य से अधिक की तुलना करती है, और दो शून्य संदर्भ एक-दूसरे के बराबर तुलना करते हैं।"
public static T Clamp<T>(this T value, T min, T max)
where T : IComparable<T>
{
if (value.CompareTo(max) > 0)
return max;
if (value.CompareTo(min) < 0)
return min;
return value;
}
private Int32? _zip;
public Int32? Zip
{
get
{
return _zip;
}
set
{
_zip = value.Clamp<Int32?>(0, 99999);
}
}
मुझे यकीन नहीं है कि मैंने ऐसा क्यों नहीं किया (मूल्य == शून्य)? मान: value.Clamp (0, 99 999); शुरुआत के लिए। मुझे लगता है कि मैं क्लैंप को स्वचालित रूप से करने के लिए मजबूर करने की कोशिश कर रहा था। लेकिन हां, यह वास्तव में इसे समझने के लिए और अधिक समझ में आता है क्योंकि यह क्लैंपिंग है। –
और अब यह स्ट्रिंग के लिए काम नहीं करेगा)) –