Некоректные исполнение методов HasNamespace, LookupNamespace
От: Лёлик Россия www.dosug.nu
Дата: 25.04.05 13:40
Оценка:
Народ- а почему так получается?


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?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.