2011-04-02 92 views
3

如果我使用非泛型集合,函數等等,然後傳遞值類型將被框,因爲鑄造到Object(這不利於性能)。但是,在將泛型包含在C#2.0中之後,大多數傳遞值類型的情況都被廢除了,如Object使用對象,而不是泛型

主管仍然有任何情況下,它是不可能用泛型完成的東西,仍然需要使用鑄造到Object?如果可以,請舉個例子嗎?謝謝。

+0

值得注意的是,在很多情況下,即使使用泛型,拳擊仍然會出現在值類型中。在大多數情況下,您從中受到的性能影響是微不足道的,因此它不是真正的問題。 – 2011-04-02 08:50:59

+0

@Dan Puzey,在1行代碼中 - 是的。但是把這條線放到運行幾千次的循環中,你會看到它是微不足道的...... – 2011-04-02 09:30:42

回答

6

使用System.Object提供了靈活性(以性能爲代價)。

考慮ASP.NET(會話和應用程序)的存儲機制,他們有

Dictionary<string, object> PropertyBag; 

的總體結構和你會使用他們喜歡

PropertyBag["currentCustomer"] = aCustmer; 
PropertyBag["visits"] = 0; 

這是不可能取代object在這裏輸入更強的東西。

4

是否仍有能力在任何編程的情況下這是不可能實現與仿製藥的東西,還需要使用鑄造對象

當然有。例如,在編譯時你不知道類型的情況,你需要使用反射。但如果您在編譯時知道類型,那麼使用泛型進行強類型更好。