В процессе разборок с IPv6 обнаружил непонятное для себя поведение класса System.Net.IPAddress
Вопрос: почему s1 и s2 оказываются равны?
IPAddress addr = IPAddress.Parse("fe80::abcd:1111:2222:dc9%11");
string s1 = addr.ToString();
addr.ScopeId = 0;
string s2 = addr.ToString();
if (s1 == s2) throw Application.Exception("WTF???");
Исходный адрес имеет "скоуп 11", далее я сбрасываю его в нуль (пробовал единицу, сорок два — результат аналогичен). Соответственно, в дебагере я вижу, что пропертя ScopeId изменила своё значение. Но почему не обновляется строковое представление? Оно упрямо держит одиннадцатый скоуп.
Что я не учитываю?