为什么 IPEndPoint 是可变的?有不变的版本吗?

Why is IPEndPoint mutable? Is there an immutable version?

根据 the documenation on MSDNIPEndPoint 可以设置其 AddressPort 属性。

为什么这个 class 设计成可变的?对于 reasonsString 等 class 一样,它似乎应该是不可变的。

是否有此 class 的不可变版本更适合传递线程、事件处理程序等?

没有内置的 class 的不可变版本。


答案的主观部分:使此 class 可变是 .NET Framework 中的设计缺陷。 15 年前创建它时,不可变性通常会使 API 设计更好这一点并不为人所知。 BCL 有很多不应该存在的可变性地方。