【问题标题】:Why is IPEndPoint mutable? Is there an immutable version?为什么 IPEndPoint 是可变的?有不可变的版本吗?
【发布时间】:2015-09-05 08:36:55
【问题描述】:

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

为什么这个类被设计成可变的?对于像String 这样的类,它似乎应该是不可变的reasons

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

【问题讨论】:

  • 如果您需要一个不可变的版本,只需构建它。如果你将一个实例传递给任何东西,你总是必须决定你是对实例本身感兴趣还是对它所代表的值/状态感兴趣。如果您只需要值/状态,则可以存储它们的副本。如果邮递员给你带来了一封信,你只拿信而不是邮递员——尽管你可以记住是谁。如果你读了这封信,你并没有把这封信放在你的脑海里,而是把文字的意思放在脑海里——>一个副本

标签: c# network-programming immutability endpoint


【解决方案1】:

该类没有内置的不可变版本。


回答的主观部分:使此类可变是 .NET Framework 中的设计缺陷。 15 年前创建它时,人们并不知道不变性通常会使 API 设计更好。 BCL 有很多不应该存在的可变性位置。

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多