C# C中的数组列表#
我们可以将ArrayList作为参数传递给C#中的方法吗?可以。当然可以,为什么不:C# C中的数组列表#,c#,arraylist,C#,Arraylist,我们可以将ArrayList作为参数传递给C#中的方法吗?可以。当然可以,为什么不: public void SomeMethod(ArrayList list) { // your code here } 但是正如Jon S.提到的,使用接口是首选的,而不是硬编码类型 public void SomeMethod(IList list) { // your code here } 另见: 绝对是。然而,你很少应该这样做。现在,您几乎应该始终使用泛型类型,例如List
public void SomeMethod(ArrayList list)
{
// your code here
}
但是正如Jon S.提到的,使用接口是首选的,而不是硬编码类型
public void SomeMethod(IList list)
{
// your code here
}
另见:
绝对是。然而,你很少应该这样做。现在,您几乎应该始终使用泛型类型,例如
List
此外,在声明方法的参数时,在可以使用的地方使用接口是值得的。例如,如果您有这样一种方法:
public void SomeMethod(ArrayList list)
然后任何调用它的人都必须使用ArrayList
。即使他们愿意,他们也不能使用List
。另一方面,如果您声明您的方法为:
public void SomeMethod(IList list)
然后,即使您的代码不知道泛型,它们也可以使用泛型。任何类型都可以作为方法的参数传递。无论是抽象的、接口的、值类型的,还是其他的
Jon Skeet提到了接口的使用。是的,这很好,但是有一个小陷阱-你不能很容易地从这个方法导航到它的用法。我不完全同意Jon,你不应该在公共接口上使用ArrayList,尽管出于性能原因,数组可能会在内部(私有范围)使用。你是指数组还是ArrayList?由于性能原因,我不会在内部API中指定ArrayList,因为没有证据表明它真的很重要。。。并不是说当泛型可用时,我无论如何都会使用ArrayList。如果您使用soap Web服务,则列表和泛型在序列化时可能会有问题。因此,集合始终是数组。@Bob:是的,在那里使用数组是有意义的,但是我们回到了强类型集合,而不是ArrayList。我在这里一直在特别谈论ArrayList,因为这就是问题所要问的:)-1。你刚才问了这个问题: