我正在使用C#/ .NET 3.5中的選擇器模式實現一些網絡代碼。但是,我驚奇地發現Select
方法採用非通用IList
而不是IList<Socket>
's。它在幫助文檔中明確指出,雖然預計這裏沒有其他插座列表。爲什麼Socket.Select(...)需要IList而不是(也)IList <Socket>?
有誰知道這是爲什麼?
我正在使用C#/ .NET 3.5中的選擇器模式實現一些網絡代碼。但是,我驚奇地發現Select
方法採用非通用IList
而不是IList<Socket>
's。它在幫助文檔中明確指出,雖然預計這裏沒有其他插座列表。爲什麼Socket.Select(...)需要IList而不是(也)IList <Socket>?
有誰知道這是爲什麼?
從the docs:
支持:4,3.5,3.0,2.0,1.1,1.0
這將在.NET 1.0是一個非常有趣的簽名......
如果不打破現有的呼叫者,則不能更改簽名。他們可能會添加一個重載,但我不確定這會有多大的幫助 - 如果您嘗試使用錯誤參數類型的「新」重載(例如List<string>
而不是List<Socket>
),它只會綁定到舊的過載。
Socket.Select
(我假設你的意思是Select)是一種已經存在於.NET 1.0中的方法,而且微軟顯然從來沒有打算更新它,可能是因爲它是一個古怪而且很少使用的API。
他們怎麼可能更新它呢? – 2010-06-21 14:58:23
使用'ObsoleteAttribute'提供重載並修飾原始函數。 – ErikHeemskerk 2010-06-21 15:15:22
謝謝。關於他們爲什麼不能添加額外超載的解釋是我錯過的。 – 2010-06-21 18:22:02