【问题标题】:Why can't I write IO.Directory.GetFiles?为什么我不能写 IO.Directory.GetFiles?
【发布时间】:2012-03-15 00:52:49
【问题描述】:

我来自VB.Net 环境,使用Imports System 然后IO.Directory.GetFiles(...) 有效。

另一方面,using System; 似乎不足以编写使用IO.Directory 而不使用前缀System.。唯一的解决方法似乎是 using IO = System.IO;

为什么?


示例代码:

using System;
using System.IO;

namespace Test {
    class Program {
        static void Main(string[] args) {
            System.Console.WriteLine(IO.Directory.GetFiles(System.Environment.CurrentDirectory)[0]);
        }
    }
}

编辑:我的问题不是我应该怎么做才能让我的代码正常工作,而是“为什么我不能写IO.Directory.GetFiles??”

【问题讨论】:

  • 请记住,当您键入确切的类名时,您总是会在类名的右下角看到未添加的命名空间的小提示。您可以通过将鼠标悬停在红色指示上并执行所需的操作来扩展它。

标签: c# using-directives


【解决方案1】:

添加

使用 System.IO;

你会得到你期望的行为。如果没有 using 指令(或完全限定),C# 不会使子命名空间可用。

【讨论】:

  • +1 很好,只是感兴趣,也许您对 MSDN 有任何关于此类要求的参考,这会很棒
  • 当我写 IO.Directory.GetFiles 时,这会产生 The name 'IO' does not exist in the current context
  • @Matt: 好的,但问题是为什么using System; is not sufficient to write use IO.Directory without prefixing it with System.,所以using 存在,但不允许在不额外使用子命名空间的情况下访问子名称规范的具体类型,例如没有usign System.IOIO.Directory.GetFiles()
  • @nawfal:我的追求不是我如何使用Directory.*,而是我如何写IO.Directory.*
  • 在这种情况下,唯一的解决方法是您自己在问题中发布的内容。这就是 C# 的做事方式。至于“为什么”会这样,我很无奈,我从来没有被它困扰过。
【解决方案2】:

您所说的事情在 C# 中是不可能的,这可能是 C# 和 vb.NET 之间的差异。

如果您将 vb.Net 代码转换为 C#,那么使用本网站将帮助您很多

vb.net to c#

你的代码

System.IO.Directory.GetFiles(...)

或添加

using System.IO;

会为你做的

【讨论】:

  • 我想去掉 System 前缀。
  • @Clément,将using System.IO; 添加到您的命名空间集合的顶部!
猜你喜欢
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
相关资源
最近更新 更多