Народ- а почему так получается?
using System;
using System.Xml;
using System.Text;
class Test
{
public static void Main()
{
XmlNamespaceManager nsm = new XmlNamespaceManager(new NameTable());
string ns1 = "ab";
nsm.AddNamespace(ns1, "urn:my-schema");
StringBuilder sb = new StringBuilder();
sb.Append("a");
sb.Append("b");
string ns2 = sb.ToString();
Console.WriteLine( "Object.ReferenceEquals(ns1, ns2) : " + Object.ReferenceEquals(ns1, ns2) );
Console.WriteLine( ns1 + " : " + nsm.LookupNamespace(ns1) );
Console.WriteLine( ns2 + " : " + nsm.LookupNamespace(ns2) );
ns2 = string.Intern(ns1);
Console.WriteLine( "Object.ReferenceEquals(ns1, ns2) : " + Object.ReferenceEquals(ns1, ns2) );
Console.WriteLine( ns1 + " : " + nsm.LookupNamespace(ns1) );
Console.WriteLine( ns2 + " : " + nsm.LookupNamespace(ns2) );
}
}
Возвращает
Object.ReferenceEquals(ns1, ns2) : False
ab : urn:my-schema
ab :
Object.ReferenceEquals(ns1, ns2) : True
ab : urn:my-schema
ab : urn:my-schema
BUG?