作者brian780405 (pohan)
看板C_Sharp
标题[问题] 如何将传入的泛型资料存起来?
时间Fri Aug 11 11:07:54 2017
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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1502420876.A.BA8.html
※ 编辑: brian780405 (211.75.116.70), 08/11/2017 11:08:39
1F:→ ssccg: 你是List<T>为什麽要存在intList,宣告成GenericTest<T> 08/11 11:20
2F:→ 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
3F:推 vi000246: 用getType判断罗 不然就是用where T 08/11 12:11
4F:推 julia28: 程式码呼叫到泛型的function後,compiler会生出一份相对 08/11 12:13
5F:→ julia28: 应型别的function,写泛型function时不需要知道T到底是 08/11 12:13
6F:→ julia28: 什麽 08/11 12:13
7F:→ ssccg: 用typeof(T)去判断啊 08/11 13:13
我知道可以用typeof去判断T,然後就不知道怎麽做了
又不能把T强制转型成int之类的...
※ 编辑: brian780405 (211.75.116.70), 08/11/2017 13:32:33
8F:推 james732: 好奇你之後是怎麽解决的? 08/11 17:44
9F:→ ssccg: 所以你的问题只是不知道怎麽存List<T>的reference? 08/11 18:56
10F:→ 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