पर अंतर्निहित ऑपरेटर क्या निम्नलिखित की तरह एक अंतर्निहित ऑपरेटर का उपयोग के साथ कुछ गलत है:सामान्य प्रकार
//linqpad c# program example
void Main()
{
var testObject = new MyClass<int>() { Value = 1 };
var add = 10 + testObject; //implicit conversion to int here
add.Dump(); // 11
}
class MyClass<T>
{
public T Value { get; set; }
public static implicit operator T (MyClass<T> myClassToConvert)
{
return myClassToConvert.Value;
}
}
मैं सोच रहा था मैं एक मूल्य के प्रकार के रूप में वस्तु इस तरह के उदाहरण के रूप में इलाज कर सकता है, लेकिन मैं के रूप में देख रहा है मैंने कभी इसका एक उदाहरण नहीं देखा है, मैंने सोचा था कि शायद कोई ऐसा कारण नहीं था जिससे कोई बता सके?
मेरे वास्तविक कोड में मैं डेटा एब्स्ट्रक्शन लेयर के हिस्से के रूप में ऐसा करने की सोच रहा था, ताकि मैं अंतर्निहित डेटा का वर्णन करने वाली जानकारी के साथ वस्तुओं को वापस कर सकूं, लेकिन तर्क कोड को इसे मान प्रकार के रूप में मानने की अनुमति दें, जब यह सब इसके बारे में जानने की जरूरत है मूल्य है, और साथ ही यह सब अच्छा रखो और जेनेरिक के साथ सुरक्षित टाइप करें।
मुझे यकीन है कि मैं नल प्रकार चारों ओर चिंता को समझते हैं नहीं कर रहा हूँ ... मुझे ऐसा लगता है कि आप एन = नए MyClass() {मान = अशक्त} था; और उपभोग करने वाले कोड ने int i = n जैसे कुछ करने का प्रयास किया; और यह वही अपवाद फेंक देगा कि कोई भी बुरा कलाकार, यहां शून्य तरीके के बारे में कुछ खास नहीं होगा? –
asawyer
@asawyer: यह सिर्फ एक उदाहरण था। कल्पना कीजिए कि वहां कोई टी नहीं था? और * आपको * को अपने 'शून्य' 'को लागू करना था। क्या आप इसे 'टी' में एक अंतर्निहित रूपांतरण देंगे? मेरा जवाब बताता है कि आपको क्यों नहीं करना चाहिए, और क्यों * वास्तविक * 'टी? 'नहीं। –
Timwi
अब मैं देखता हूं, यह इस तरह की चिंताओं है जिसने सवाल को पहले स्थान पर पहुंचाया। ऐसा लगता है कि मुझे प्रक्रिया करने के लिए ठीक होना चाहिए, लेकिन बहुत सावधान रहना चाहिए। – asawyer