【问题标题】:Can I do "using namespace.class"?我可以“使用 namespace.class”吗?
【发布时间】:2015-03-01 05:50:51
【问题描述】:

我想知道这一点,因为我显然无法做到这一点。我添加了我的 .dll 作为参考,并添加了 using myNamespace; 但每当我想调用其中一个函数时,我必须使用 myClass.myMethod(); 有什么我可以做的,所以我在调用过程时不需要引用类名?所以我只需要 myMethod();

【问题讨论】:

  • 如果你调用的方法是静态的,那么你将通过类名调用它
  • 是的,方法是静态的,有什么办法可以避免用myClass.myMethod(); 而不是myMethod();
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# class dll reference namespaces


【解决方案1】:

你现在不能。但在 C# 6.0 中,您将能够使用 static 类的 using 指令。

例如:

using System.Console;
// ...
Write(4);

您可以查看所有功能的详细列表here

【讨论】:

  • 看起来您缺少“静态”并且链接没有帮助。
【解决方案2】:

在当前的 C# 中,您不能以任何方式这样做。 using 只是将命名空间放入您的代码中,这样您就不必在每次需要时都显式地编写它。

如果您的班级是 static 并且您使用的是 C# 6.0,您可以这样做:

using static System.Console;

private static void Main(string[] args)
{
    WriteLine("test");
}

【讨论】:

  • 好的,谢谢!我只是有点困惑,因为我一直在从 VB 迁移(你可以在其中这样做)
  • using System.Console; 产生错误。根据这篇文章,正确的语法是 using static System.Console;stackoverflow.com/questions/31852389/…
【解决方案3】:

正如其他答案已经解释的那样,这在 C# 6 之前是不可能的。但是,您可以使用允许您为类型创建自定义名称的别名让您的生活更轻松。例如,当某些类的名称较长或出于其他任何原因时,它非常方便:

您可以通过将类型分配给using Directive 中的名称来定义别名。还有一些其他的事情你应该知道:

  • using 指令的范围仅限于它出现的文件。

  • 创建一个 using 别名,以便更容易地将标识符限定为命名空间或类型。 using 别名指令的右侧必须始终是完全限定类型,无论其前面的 using 指令如何。

  • 创建 using 指令以使用命名空间中的类型,而无需指定命名空间。 using 指令不允许您访问嵌套在您指定的命名空间中的任何命名空间。

using util = MyNameSpace.MyVeryLongNameStaticUtilityClass;
using other = MyNameSpace.MyVeryLongNameOtherClass;

然后你可以像这种类型一样使用它:

private static void Main(string[] args)
{
    var result = util.ParseArgs(args);
    var other = new other();
}

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 2011-05-26
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2014-02-17
    • 2018-12-01
    • 2011-07-19
    相关资源
    最近更新 更多