昨天我遇到了一个看起来像 .NET 错误的东西。
IPAddress addr = IPAddress.Parse("fe80::1111:2222:abc%11"); // ScopeId is 11
string s1 = addr.ToString(); // I obviously see fe80::1111:2222:abc%11
addr.ScopeId = 0; // ScopeId is zero from now
string s2 = addr.ToString(); // I expect to see fe80::1111:2222:abc
为什么更改后的s1
内容还是一样的?在调试器监视窗口中,我看到范围值确实发生了变化。但内部字符串字段没有影响。s2
ScopeId
当然,我用各种 IPv6 地址和不同的范围 ID 进行了尝试——行为是相同的。我错过了什么?