[問題] 如何將傳入的泛型資料存起來? (已解決)

看板C_Sharp作者 (pohan)時間6年前 (2017/08/11 11:07), 6年前編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
public class GenericTest { private List<int> intList; public void Set<T>(List<T> list) { //外部呼叫此方法,傳入List<T> //然後將此list給存下來 //類似intList = list之類的 } } 在其他Script會呼叫Set<T>(),將一個List<T>給丟過來 請問如何正確地把該List<T>給存起來? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.116.70 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1502420876.A.BA8.html ※ 編輯: brian780405 (211.75.116.70), 08/11/2017 11:08:39

08/11 11:20, , 1F
你是List<T>為什麼要存在intList,宣告成GenericTest<T>
08/11 11:20, 1F

08/11 11:20, , 2F
和 private List<T> genericList;
08/11 11:20, 2F
intList那段是打個比喻,如果list是List<int>才用intList存 主要的問題是呼叫Set的那一方知道T是什麼 但收到list的這邊要怎樣知道T是什麼?然後把他存下來? 這邊我一直搞不懂... ※ 編輯: brian780405 (211.75.116.70), 08/11/2017 11:40:13

08/11 12:11, , 3F
用getType判斷囉 不然就是用where T
08/11 12:11, 3F

08/11 12:13, , 4F
程式碼呼叫到泛型的function後,compiler會生出一份相對
08/11 12:13, 4F

08/11 12:13, , 5F
應型別的function,寫泛型function時不需要知道T到底是
08/11 12:13, 5F

08/11 12:13, , 6F
什麼
08/11 12:13, 6F

08/11 13:13, , 7F
用typeof(T)去判斷啊
08/11 13:13, 7F
我知道可以用typeof去判斷T,然後就不知道怎麼做了 又不能把T強制轉型成int之類的... ※ 編輯: brian780405 (211.75.116.70), 08/11/2017 13:32:33

08/11 17:44, , 8F
好奇你之後是怎麼解決的?
08/11 17:44, 8F

08/11 18:56, , 9F
所以你的問題只是不知道怎麼存List<T>的reference?
08/11 18:56, 9F

08/11 18:57, , 10F
不需要知道T是什麼,用IList(非generic的)就可以吧
08/11 18:57, 10F
我做的東西的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
文章代碼(AID): #1PZH-Cke (C_Sharp)