क्यों मैं इस तरह के निहित और स्पष्ट ऑपरेटरों को परिभाषित नहीं कर सकता?मैं निहित और स्पष्ट ऑपरेटरों दोनों को परिभाषित क्यों नहीं कर सकता?
public class C
{
public static implicit operator string(C c)
{
return "implicit";
}
public static explicit operator string(C c)
{
return "explicit";
}
}
आप इस हैक हालांकि :)
class Program
{
public class A
{
}
public class B
{
public static implicit operator A(B b)
{
Console.WriteLine("implicit");
return new A();
}
}
public class C : B
{
public static explicit operator A(C c)
{
Console.WriteLine("explicit");
return new A();
}
}
static void Main(string[] args)
{
C c = new C();
A a = c;
A b = (A) c;
}
}
यह प्रिंट कर सकते हैं:
implicit
explicit
कौन कहता है कि आप नहीं कर सकते? यानी, जब आप कोशिश करते हैं तो क्या होता है? –
आप दोनों के बीच अलग-अलग कार्यान्वयन क्यों चाहते हैं? –
ओवरराइड टूस्ट्रिंग एक निहित कास्ट ऑपरेटर तक भी बंद नहीं है। आपका उदाहरण कोड केवल काम करता है क्योंकि कंसोल। राइटलाइन के पास ऑब्जेक्ट ओवरलोड है और ऑब्जेक्ट पर ToString() को कॉल करता है। – Samuel