बस सोच अगर वहाँ वैसे भी है सी # में निम्न कोड 3.5 प्रतिनिधित्व करने के लिए:क्या सी # में एक सामान्य कास्ट ऑपरेटर को निम्न तरीके से अधिभारित करना संभव है?
public struct Foo<T> {
public Foo(T item) {
this.Item = item;
}
public T Item { get; set; }
public static explicit operator Foo<U> (Foo<T> a)
where U : T {
return new Foo<U>((U)a.Item)
}
}
धन्यवाद
और यहां तक कि अगर हमने उपयोगकर्ता द्वारा परिभाषित जेनेरिक रूपांतरणों का समर्थन किया है, तो यह अभी भी अवैध होगा। एक रूपांतरण को परिभाषित करना अवैध है जो अंतर्निहित रूपांतरण को प्रतिस्थापित करता है। ऐसा इसलिए होगा यदि टी और यू एक ही प्रकार के थे; आप पहचान रूपांतरण की जगह ले लेंगे। –
चूंकि कंपाइलर द्वारा कास्ट का निर्णय लिया जाता है, यदि टी और यू एक ही प्रकार के थे, तो यह उपयोगकर्ता परिभाषित कलाकार का उपयोग नहीं करेगा, और लीगल हो जाएगा। –