मैं एक साधारण विधि बनाना चाहता हूं जो मान प्रकार और संदर्भ प्रकार पैरामीटर स्वीकार करता है, यानी int मान है, और स्ट्रिंग संदर्भ है।एक सी # जेनेरिक विधि बना रहा है जो (शून्य) मान प्रकार और संदर्भ प्रकार को स्वीकार करता है?
तो यह है कि मैं क्या के साथ शुरू:
var r1 = areBothNotNull<int>(3, 4); // will be true
var r2 = areBothNotNull<int>(3, null); // will be false
var r3 = areBothNotNull<string>("three", "four"); // will be true
var r4 = areBothNotNull<string>(null, "four"); // will be false
लेकिन पहले इस मुद्दे को मैं मुठभेड़
The type 'T' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'है:
public bool areBothNotNull<T>(T? p1, T? p2)
{
return (p1.HasValue && p2.HasValue);
}
तो मैं इस तरह इसका इस्तेमाल करने में सक्षम होना चाहते
आगे बढ़ने के लिए मैं अपनी विधि
पर एक संरचना बाधा जोड़ता हूंpublic bool areBothNotNull<T>(T? p1, T? p2) where T : struct
लेकिन अब विधि स्ट्रिंग आधारित कॉल को स्वीकार नहीं करेगा, और मुझे इस त्रुटि देता है:
The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method.
यह संभव है? या हम ऐसा करने से क्यों रोके हैं?
जो एक अजीब बात करना चाहता है? –
यह अजीब बात नहीं है, यह सिर्फ सी ++ की मीठी गंध है। –