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

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

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

简单地说,您不必为使用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 

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

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

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

我认为,他们找出这个名字的方式并没有多大差别。