सी # में मैं इस प्रकार एक वर्ग के लिए अंतर्निहित ऑपरेटरों जोड़ सकते हैं:क्या एफ # में सी # निहित ऑपरेटर बनाने के बराबर है?
public class MyClass
{
private int data;
public static implicit operator MyClass(int i)
{
return new MyClass { data = i };
}
public static implicit operator MyClass(string s)
{
int result;
if (int.TryParse(s, out result))
{
return new MyClass { data = result };
}
else
{
return new MyClass { data = 999 };
}
}
public override string ToString()
{
return data.ToString();
}
}
तो मैं किसी भी समारोह है कि एक MyClass एक स्ट्रिंग या किसी पूर्णांक आपत्ति की उम्मीद है पारित कर सकते हैं। जैसे
public static string Get(MyClass c)
{
return c.ToString();
}
static void Main(string[] args)
{
string s1 = Get(21);
string s2 = Get("hello");
string s3 = Get("23");
}
वहाँ एफ # में ऐसा करने का कोई तरीका है?
यह F # 2.0 में एक अवैध उपसर्ग ऑपरेटर नाम प्रतीत होता है। ऑपरेटर नामों के नियम कहीं परिभाषित हैं? मुझे [एमएसडीएन] (http://msdn.microsoft.com/en-us/library/dd233204.aspx) पृष्ठ पर कुछ भी दिखाई नहीं देता है जो इस प्रतिबंध को इंगित करता है। – Daniel
नाम से '~' निकालना काम पर प्रतीत होता है। क्या नियम बदल गए? – Daniel
@ डैनियल - हाँ, मुझे लगता है कि नियम बदल गए होंगे। '~' को छोड़कर काफी काम नहीं करेगा क्योंकि यह इसे उपसर्ग ऑपरेटर के बजाय एक इंफिक्स बना देगा। हालांकि, '~' को '!' के साथ बदलना चाहिए। – kvb