1
根據the documenation on MSDN,IPEndPoint
可以設置其Address
和Port
屬性。爲什麼IPEndPoint是可變的?有沒有不可變的版本?
爲什麼這堂課設計爲可變?看起來它應該是不可變的,相同的reasons,類如String
。
是否有這個類的不可變版本更適合傳遞線程,事件處理程序等?
根據the documenation on MSDN,IPEndPoint
可以設置其Address
和Port
屬性。爲什麼IPEndPoint是可變的?有沒有不可變的版本?
爲什麼這堂課設計爲可變?看起來它應該是不可變的,相同的reasons,類如String
。
是否有這個類的不可變版本更適合傳遞線程,事件處理程序等?
該類沒有內置的不可變版本。
答案的主觀部分:使這個類變爲可變是.NET Framework中的一個設計缺陷。 15年前創建時,不可變性常常使API設計更好。 BCL有很多不應該存在的地方。
如果您需要一個不可變的版本,只需構建它。如果你將一個實例傳遞給任何東西,你總是必須決定你是否對實例本身感興趣,或者只是它所代表的值/狀態。如果您只需要值/狀態,您可以存儲它們的副本。如果郵遞員給你發了一封信,你只能拿信,而不是郵遞員 - 儘管你可以記得是誰。如果你讀了這封信,你並沒有把這封信放在你的頭上,而是寫下了文字的意思 - >一份 –