In my new code I am not using strings to pass directory paths or file names. Instead I am using DirectoryInfo and FileInfo as they seem to encapsulate a lot of information.
I have seen a lot of code that uses strings to pass directory information then they ‘split’ and ‘mid’ and ‘instr’ in long incomprehensible statements until they get the part of the directory they are looking for.
Is there any good reason to pass paths as strings?
In general, I think keeping the information in FileInfo/DirectoryInfo is better. There is a lot of useful functionality in these classes, as well as a lot of safety involved in that it’s much easier to check for existence of a file, see the originally specified file, etc.
The only place where I would (potentially) pass a path as as a string instead of using FileInfo and DirectoryInfo would if the path was going to be passed across AppDomains or between processes, etc.
FileInfo and DirectoryInfo both work fine across AppDomain boundaries (since they’re Serializable), but they have a fair amount more overhead in this situation. If things are going back and forth a lot, it could have an impact.
I would stick with FileInfo and DirectoryInfo in this case, though, unless I found that there was a noticeable problem during my profiling, and I was trying to reduce the amount of serialized data. If I didn’t run into performance issues, I’d stick with using these classes, as they provide a lot of safety and functionality.