如何定义类型列表以便我可以将其用作:
var l1 = new List<int>();
var l2 = new List<int, long>();
var l3 = new List<int, long, byte>();
答案 0 :(得分:2)
您可以使用元组列表:
var l1 = new List<int>();
var l2 = new List<Tuple<int, long>>();
var l3 = new List<Tuple<int, long, byte>>();
答案 1 :(得分:1)
假设您想从l3
列表中获取第3项 - 您会怎么做?
如果你的回答是&#34;我会将其投放到long
,因为int
和byte
都可以转换为long
&#34; ,你应该首先使用List<long>
。
如果您要对检索到的类型使用l3[3].GetType()
和if else
,则应考虑使用List<object>
,因为您将项目视为&#34;未知类型&#34;。
答案 2 :(得分:0)
所以,我找到了解决方案。它需要定义基类型List:
class List { }
并从中继承了许多孩子:
class List<T> { }
class List<T, T1> : List<T> { }
class List<T, T1, T2> : List<T> { }
(继承不一定,但如果List可以转换为List,则需要继承)
基本列表构造函数可以获取所有应用的通用参数:
class List
{
Type[] _types;
public List()
{
_types = GetType().GetGenericArguments();
}
}