https://msdn.microsoft.com/en-us/library/d5x73970.aspxसी # सामान्य प्रकार समानता ऑपरेटर
से जब जहां टी आवेदन: वर्ग बाधा, == से बचने और = प्रकार पैरामीटर पर ऑपरेटरों क्योंकि इन ऑपरेटरों केवल, नहीं संदर्भ पहचान के लिए परीक्षण करेगा! मूल्य समानता के लिए। यह मामला भी है यदि इन ऑपरेटरों को एक प्रकार में अधिभारित किया जाता है जिसे तर्क के रूप में उपयोग किया जाता है। निम्नलिखित कोड इस बिंदु को दर्शाता है; आउटपुट गलत है भले ही स्ट्रिंग क्लास == ऑपरेटर ओवरलोड करता है।
public static void OpTest<T>(T s, T t) where T : class
{
System.Console.WriteLine(s == t);
}
static void Main()
{
string s1 = "target";
System.Text.StringBuilder sb = new System.Text.StringBuilder("target");
string s2 = sb.ToString();
OpTest<string>(s1, s2);
}
सब कुछ ठीक है जब तक मैं स्मृति भी में विभिन्न वस्तुओं निम्नलिखित की कोशिश की, एक ही विधि
static void Main()
{
string s1 = "target";
string s2 = "target";
OpTest<string>(s1, s2);
}
यह आउटपुट 'यह सच है', एस 1 और s2 संदर्भ में वे एक ही मूल्य का अधिकार है? क्या मैं कुछ भूल रहा हूँ?
यह सही है। इसे [एमएसडीएन यहाँ] (https://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx) पर देखा जा सकता है, "जब दो या दो से अधिक स्ट्रिंग अक्षर बराबर होते हैं स्ट्रिंग समानता ऑपरेटर (धारा 7.9.7) के अनुसार एक ही असेंबली में दिखाई देता है, ये स्ट्रिंग अक्षर एक ही स्ट्रिंग उदाहरण को संदर्भित करते हैं। " –