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

时间:2011-02-12 18:20:19

标签: c# .net

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

new FileInfo(path).NamePath.GetFileName(path)

3 个答案:

答案 0 :(得分:12)

因为您不必使用Path.GetFilename()创建新对象,它将表现得更好。

以下是两者的比较:

代码:

Path.GetFileName("G:\\u.png")

IL:

IL_0000:  ldstr       "G:\u.png"
IL_0005:  call        System.IO.Path.GetFileName

代码:

new FileInfo("G:\\u.png").Name

IL:

IL_0000:  ldstr       "G:\u.png"
IL_0005:  newobj      System.IO.FileInfo..ctor
IL_000A:  callvirt    System.IO.FileSystemInfo.get_Name

答案 1 :(得分:9)

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

答案 2 :(得分:0)

Performancewise Path.GetFilename()将胜过其他版本,因为它是静态的。您的第一个版本创建了一个必须实例化并进行垃圾回收的对象。

可读性:Path.GetFilename()显然赢得了恕我直言!

我认为他们找出这个名字的方式差别不大。