哪一个更好用,为什么? 我的意思是这两个命令在哪些方面有所不同? 性能,可读性,......
new FileInfo(path).Name
或Path.GetFileName(path)
答案 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()显然赢得了恕我直言!
我认为他们找出这个名字的方式差别不大。