为什么System.IO.Directory.GetFiles没有List(Of String)返回重载?

时间:2016-02-08 18:46:58

标签: .net vb.net list

我只发现了返回字符串数组的重载。 是否存在没有List(Of String)的具体原因?

我必须写

Dim nNewStringArray() As String
ReDim nNewStringArray(0)
nNewStringArray = System.IO.Directory.GetFiles(uInitDir)

而不是只能写

Dim nNewListOfString As New List(Of String) = System.IO.Directory.GetFiles(uInitDir)

我觉得Redim有点老了。

1 个答案:

答案 0 :(得分:1)

我可以想到3个原因(没有特别的顺序):

  1. 当开发方法时,没有泛型,因此没有List<T>。所以string[]是当时最好的强类型选项。

  2. 你不能通过返回类型重载方法,所以它必须被称为GetListOfFiles()(坏)或者是一个突破性的变化(非常糟糕)

    < / LI>
  3. 它同样容易:

    Dim nNewListOfString As New List(Of String) (System.IO.Directory.GetFiles(uInitDir))
    
  4. 另外,如您的问题评论中所述,您不需要 ReDim您的阵列。你可以这样做:

    Dim nNewStringArray() As String
    nNewStringArray = System.IO.Directory.GetFiles(uInitDir)
    

    或只是

    Dim nNewStringArray() As String = System.IO.Directory.GetFiles(uInitDir)
    

    如果你愿意的话。我将结果转换为List的唯一原因是我要向其中添加项目。几乎所有其他事情都可以用数组来完成。