Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中的数组列表#_C#_Arraylist - Fatal编程技术网

C# 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

我们可以将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)
    
    然后任何调用它的人都必须使用
    ArrayList
    。即使他们愿意,他们也不能使用
    List
    。另一方面,如果您声明您的方法为:

    public void SomeMethod(IList list)
    

    然后,即使您的代码不知道泛型,它们也可以使用泛型。

    任何类型都可以作为方法的参数传递。无论是抽象的、接口的、值类型的,还是其他的


    Jon Skeet提到了接口的使用。是的,这很好,但是有一个小陷阱-你不能很容易地从这个方法导航到它的用法。

    我不完全同意Jon,你不应该在公共接口上使用ArrayList,尽管出于性能原因,数组可能会在内部(私有范围)使用。你是指数组还是ArrayList?由于性能原因,我不会在内部API中指定ArrayList,因为没有证据表明它真的很重要。。。并不是说当泛型可用时,我无论如何都会使用ArrayList。如果您使用soap Web服务,则列表和泛型在序列化时可能会有问题。因此,集合始终是数组。@Bob:是的,在那里使用数组是有意义的,但是我们回到了强类型集合,而不是ArrayList。我在这里一直在特别谈论ArrayList,因为这就是问题所要问的:)-1。你刚才问了这个问题: