使用Directory.GetCurrent时的内存或时间选择?

时间:2011-04-11 09:39:37

标签: c#-4.0

我徘徊是最好的事情:

string tmp = Directory.GetCurrentDirectory();
string path = tmp.Substring(0,tmp.LastIndexOf('\\'));

string path = Directory.GetCurrentDirectory().Substring(0, Directory.GetCurrentDirectory().LastIndexOf('\\'));

当我想要获取当前目录的根目录时?要调用两次方法或者做一个必须在此之后从垃圾收集器中删除的字符串变量?

3 个答案:

答案 0 :(得分:3)

关于垃圾收集器的“问题”:垃圾收集器不收集变量,它收集对象。仍然使用您的第二种方法创建一个字符串对象,您只是不将其用于自己的使用。

它们几乎相同,区别在于第二次调用Directory.GetCurrentDirectory两次,从而创建第二个字符串对象。与您的想法相反,在垃圾收集器上放置额外工作的是第二种选择。

与性能无关,只需将其值存储在变量中以供进一步使用,就会更简单,更安全(无竞争条件)。

要获取父目录的路径,我将使用Path.GetDirectoryName方法,因为它使代码更清晰,更简洁,更便携:

string path = Path.GetDirectoryName(tmp);

答案 1 :(得分:1)

我查看了System.IO.Directory的源代码,GetCurrentDirectory()方法进行了几次本机调用,使用StringBuilder,然后每次调用该方法时进行一些处理。因此,使用第一个选项将是更好的选择。

答案 2 :(得分:0)

我会选择第一个 - 它至少是人类可读的。我认为你不会通过选择第二个片段获得任何收益。