C#基于某些条件

时间:2015-04-22 16:45:17

标签: c# .net generics

我不确定标题是否以最佳方式描述了这一点,所以我只会遇到问题 - 我有一个变量pabs,它将是一个包含4元组,5元组的列表,或基于某些条件的6元组......问题是我真的不知道它会是哪一个所以我在为这个变量声明类型时遇到了麻烦。

基本上我想这样做:

if (condition1)
    pabs = loadData() // returns a list of 4-tuples
else if (condition2)
    pabs = loadData() // overloaded version returning a list of 5-tuples
else
    pabs = loadData() // overloaded version returning a list of 6-tuples

这有可能吗?

1 个答案:

答案 0 :(得分:0)

你对n元组列表的确切含义&#39;?你应该说一个n元素的元组列表&#39;因为.net将列表定义为List<T>,将许多元组定义为Tuple<T>, Tuple<T1, T2>, Tuple<T1, T2, T3>, ...

如果您希望变量 pabs List<Tuple<T1,..., T4>>List<Tuple<T1,..., T5>>List<Tuple<T1,..., T6>>。那么你希望 pabs 可以采用三种不同的类型。因此,除非 object ,否则您无法为这三种不同的类型提供通用类型。 之后对于使用坏事,你必须要求它的类型,并根据它的类型,做一些事情。

if(pabs is List<Tuple<T1,..., T4>>){...}
else if(pabs is List<Tuple<T1,..., T5>>){...}
else{...}