→ ssccg: 你是List<T>為什麼要存在intList,宣告成GenericTest<T> 08/11 11:20
→ ssccg: 和 private List<T> genericList; 08/11 11:20
intList那段是打個比喻,如果list是List<int>才用intList存
主要的問題是呼叫Set的那一方知道T是什麼
但收到list的這邊要怎樣知道T是什麼?然後把他存下來?
這邊我一直搞不懂...
※ 編輯: brian780405 (211.75.116.70), 08/11/2017 11:40:13
推 vi000246: 用getType判斷囉 不然就是用where T 08/11 12:11
推 julia28: 程式碼呼叫到泛型的function後,compiler會生出一份相對 08/11 12:13
→ julia28: 應型別的function,寫泛型function時不需要知道T到底是 08/11 12:13
→ julia28: 什麼 08/11 12:13
→ ssccg: 用typeof(T)去判斷啊 08/11 13:13
我知道可以用typeof去判斷T,然後就不知道怎麼做了
又不能把T強制轉型成int之類的...
※ 編輯: brian780405 (211.75.116.70), 08/11/2017 13:32:33
推 james732: 好奇你之後是怎麼解決的? 08/11 17:44
→ ssccg: 所以你的問題只是不知道怎麼存List<T>的reference? 08/11 18:56
→ ssccg: 不需要知道T是什麼,用IList(非generic的)就可以吧 08/11 18:57
我做的東西的Set<T>是繼承介面後實做出來的,這篇發文沒提到就是了...
重複看了s大的回文後,想到只要把介面定成泛型介面
這樣就可以達到我的需求
public interface ISet<T> {
void Set<T>(List<T> list);
}
public class GenericTest : ISet<int>
{
private List<int> intList;
public void Set(List<int> list)
{
intList = list;
}
}
當初也沒表達清楚就是了...
感謝各位鄉民的幫忙
※ 編輯: brian780405 (114.32.35.69), 08/14/2017 22:40:05