2012-11-29 28 views

回答

4

这是因为Windows API MoveFile及相关函数也可用于移动目录,但CopyFile及其相关函数不能与目录一起使用。

更基本的原因是,移动文件或目录只是重命名它;它实际上并不需要物理移动磁盘上的文件(或文件)数据。当你重命名一个目录时,它所包含的文件会自动选择新的路径“通过引用”,就像它一样。没有必要对每个文件的条目进行操作。

3

这并不是说.NET不必复制整个目录的方法(因为存在一个在VB.NET),它是C#不必复制整个目录的方法。

鉴于此功能在其他.NET语言的支持,似乎不太可能有其没有在C#中的技术或哲学的原因,我们可以回到属于零假设"by default features don't exist"(如oftexplained由埃里克利珀)。

+1

但是任何存在于VB.NET中的方法存在于C#中,只要您引用正确的程序集。真正的问题是*目录类*没有复制整个目录的方法,这是OP要求的问题。 – phoog

+2

@phoog - 当然,你可以在C#中使用VB.NET方法。您对Windows API中可用函数的回答很有意思,并且可能会导致实现此功能的成本,但它仍然只是导致功能无法使用的一部分原因,而我只是试图指出OP朝更大的方向发展。 – Ergwun

+0

当然 - 并指出VB.NET方法是讨论的一个有益补充,正如“默认功能不存在”的想法一样。值得补充的是,VB来自一种哲学,即语言允许程序员更关注更高层次的问题;这解释了在VB库中提供函数的动机(实际上,也就是'My'命名空间本身)。 – phoog

相关问题