为什么方法在传递泛型类型时必须是通用的

时间:2017-12-07 09:50:30

标签: c# generics

例如我有这个C#方法:

public static int Count<T>(IEnumerable<T> sequence)
{         
     return 0;
}

为什么我必须写Count<T>而不是Count,即使我在方法中没有使用T类型?

1 个答案:

答案 0 :(得分:5)

你没有拥有。你可以完全不通用:

public static int Count(IEnumerable sequence)
{         
     return 0;
}

IEnumerable<out T> : IEnumerable起,这将适用于所有序列。

不这样做的一个原因是,如果你打算这样做:

int count = 0;
foreach(var obj in sequence) count++;
return count;

然后非通用版本与值类型一起使用时,将每个值框 - 增加分配。通用版本不会进行任何拳击。