如果我想创建一个将 的实例IList
作为参数的方法(或任何其他接口,但让我们IList
用作示例),我可以创建一个具有类型约束的泛型方法,例如:
public static void Foo1<T>(T list) where T : IList
{
}
或者,我可以创建一个直接采用IList
参数的方法:
public static void Foo2(IList list)
{
}
出于所有意图和目的,这些方法的行为似乎完全相同:
List<string> myList = new List<string>();
Foo1(myList);
Foo2(myList);
所以这是我的问题——这两种方法有什么区别?第二种方法似乎更具可读性;是否还有其他我应该注意的差异(生成不同的 IL 等)?提前致谢。