我能使用 "using namespace.class" 命令吗?

7
我想知道是否有办法不通过引用类名就能调用函数。目前我已经将我的.dll文件添加为引用,并添加了代码using myNamespace;,但每当我想调用其中一个函数时,都必须使用myClass.myMethod();的方式。有什么方法可以让我在调用函数时不需要引用类名,而只需要使用myMethod();即可?

如果你调用的方法是静态的,那么你将通过类名来调用它。 - Vsevolod Goloviznin
是的,这些方法都是静态的,有没有什么办法可以避免使用 myClass.myMethod(); 而直接使用 myMethod(); - ohSkittle
我已经编辑了你的标题。请参考“问题的标题应该包含“标签”吗?”,在那里达成共识是“不应该”。 - John Saunders
3个回答

7
在当前的C#中,你无法以任何方式这样做。使用using只是将命名空间放入你的代码中,这样你就不必每次需要时都显式地编写它。
如果你的类是static并且你正在使用C# 6.0,你可以这样做:
using static System.Console;

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

好的,谢谢!我有点困惑,因为我一直在从可以做到这一点的 VB 转移。 - ohSkittle
1
使用 using System.Console; 会产生错误。根据此帖子,正确的语法是 using static System.Console;。链接:https://dev59.com/BVwZ5IYBdhLWcg3wGtDD#31852390 - Maris B.

4
目前还不能这样做。但是在 C# 6.0 中,您将能够使用 using 指令来引用静态类。
例如:
using System.Console;
// ...
Write(4);

您可以在此处查看所有功能的详细列表。

2
看起来你缺少了“static”,而且链接也没有帮助。 - Peter L

4
正如其他答案已经解释过的那样,在C# 6之前是不可能实现的。但是,你可以通过别名来简化生活,允许你为类型创建一个自定义名称。例如,当某个类的名称较长或出于其他原因时,这非常方便:
通过在using Directive中为名称分配一个类型来定义别名。还有其他一些需要了解的事情:
• 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();
}

使用这些 using 指令来编写类似于 using ConditionalAttribute = System.Diagnostics.ConditionalAttribute 的代码,当你需要使用原始名称时。它只适用于一个特定的类,你必须两次输入类名,并且如果你想要从命名空间中使用多个类,你必须复制-粘贴-修改该行代码。 - ChrisoLosoph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接