2012-01-25 106 views
8

可能重複:
Generic constraints, where T : struct and where T : class無力重載泛型方法與類型約束

是否有你不能在C#中使用互斥類型的限制超載的通用方法的具體原因是什麼?例如,採取以下方法:

T DoSomething<T>(T arg) where T : class 
{ /* Do something */ } 

T DoSomething<T>(T arg) where T : struct 
{ /* Do something */ } 

,並嘗試與

DoSomething("1"); 
DoSomething(1); 

調用他們,我看到它的方式,在DoSomething的()方法是相互排斥的,只要他們將採取參數 - 第一個採用引用類型,第二個採用值類型。編譯器應該能夠知道帶有字符串參數的DoSomething調用進入第一個方法,而帶有int參數的DoSomething調用進入第二個方法。

我在這裏忽略了一些概念上的泛型嗎?或者這僅僅是一個在C#中沒有實現的功能?

+1

這兩份案文可以通過添加一個鏈接以重複的答案得到改善。如果找不到解決方案,搜索不會返回任何結果或方式太多的結果,那真是令人沮喪。 –

回答