可能重複:
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#中沒有實現的功能?
這兩份案文可以通過添加一個鏈接以重複的答案得到改善。如果找不到解決方案,搜索不會返回任何結果或方式太多的結果,那真是令人沮喪。 –