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

后端 未结 3 533
醉梦人生
醉梦人生 2020-12-09 19:28

which one is better to use and why? I mean in which aspects these two commands differ and how? Performance, readability, ...

new FileInfo(path).Name or

相关标签:
3条回答
  • 2020-12-09 20:01

    I'd suggest using Path.GetFilename() because it simply parses path and returns file name. On other hand FileInfo object will check if executed code has rights to access specified file which is relatively slow.

    0 讨论(0)
  • 2020-12-09 20:03

    Performancewise Path.GetFilename() will outperform the other version as it is static. Your first version creates an object which has to be instantiated and garbage collected.

    Readability: Path.GetFilename() clearly wins IMHO!

    The way they figure out the name won't differ much I think.

    0 讨论(0)
  • 2020-12-09 20:11

    Simply as you won't have to Create a new Object for using Path.GetFilename() it will perform better.

    Here is a Comparison for both:

    Code:

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

    IL:

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

    Code:

    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
    
    0 讨论(0)
提交回复
热议问题