這工作:爲什麼參考參數不是逆變?
EndPoint endPoint = new IPEndPoint(_address, _port);
_socket.ReceiveFrom(buffer, 0, 1024, SocketFlags.None, ref endPoint);
但這並不:
IPEndPoint endPoint = new IPEndPoint(_address, _port);
_socket.ReceiveFrom(buffer, 0, 1024, SocketFlags.None, ref endPoint);
(注端點的類型)似乎很奇怪
。爲什麼ref關鍵字破壞參數逆變?
更好的問題是「爲什麼輸出參數不是協變的?」 Out參數在幕後實現與ref參數完全相同;我們所做的只是改變編譯器執行的明確分配規則。由於參數參數既可以讀取也可以寫入,所傳遞變量的類型不能改變任一方向;因爲out參數只是花式參考參數,所以它們也不能改變。 – 2009-08-28 15:17:08
謝謝埃裏克,這很有道理。 Ref是一個有趣的,它似乎在C#的'乾淨'實施,我們不應該真的需要它... – 2009-08-31 19:53:25