new FileInfo(path).Name与Path.GetFileName(path)

12 .net c#

哪一个更好用,为什么?我的意思是这两个命令在哪些方面有所不同?性能,可读性,......

new FileInfo(path).Name 要么 Path.GetFileName(path)

She*_*Pro 13

简单地说,您不必为使用Path.GetFilename()创建新对象,它将表现更好.

这是两者的比较:

码:

Path.GetFileName("G:\\u.png")
Run Code Online (Sandbox Code Playgroud)

IL:

IL_0000:  ldstr       "G:\u.png"
IL_0005:  call        System.IO.Path.GetFileName
Run Code Online (Sandbox Code Playgroud)

码:

new FileInfo("G:\\u.png").Name
Run Code Online (Sandbox Code Playgroud)

IL:

IL_0000:  ldstr       "G:\u.png"
IL_0005:  newobj      System.IO.FileInfo..ctor
IL_000A:  callvirt    System.IO.FileSystemInfo.get_Name
Run Code Online (Sandbox Code Playgroud)

  • 你说Path.GetFileName更快是正确的,但认为它*自动*更快是错误的,因为它是静态的.谁说它不是在内部创建对象? (11认同)
  • @joe Path仅分隔给定的字符串.没有其他的.这是一个方便,所以你不必自己做.除了字符串之外,它不会创建任何其他对象. (3认同)

小智 10

我建议使用Path.GetFilename(),因为它只是解析路径并返回文件名.另一方面,FileInfo对象将检查执行的代码是否有权访问相对较慢的指定文件.