11

有什么方法可以调用命名空间内的函数而不在 c# 中声明类。

例如,如果我有 2 个完全相同的方法并且应该在我的所有 C# 项目中使用,有没有办法将这些函数变成一个 dll,然后在顶部说“使用 myTwoMethods”并开始使用方法而不声明类?

现在,我这样做:MyClass.MyMethod();

我想做:MyMethod();

谢谢,罗希特

4

4 回答 4

31

2015 年更新:不,您不能在 C# 中创建“自由函数”,但从 C# 6 开始,您将能够在不提及类名的情况下调用静态函数。C# 6 将具有允许以下语法的“使用静态”功能:

static class MyClass {
     public static void MyMethod();
}

SomeOtherFile.cs:

using static MyClass;

void SomeMethod() {
    MyMethod();
}
于 2012-05-13T00:40:01.333 回答
16

您不能在类之外声明方法,但您可以使用类库项目中的静态帮助程序类来做到这一点。

public static class HelperClass
{
    public static void HelperMethod() {
        // ...
    }
}

用法(在添加对您的类库的引用之后)。

HelperClass.HelperMethod();
于 2012-05-12T23:56:54.317 回答
3

根据使用扩展方法的建议,您可以使该方法成为 System.Object 的扩展方法,所有类都从该方法派生。我不会提倡这一点,但关于你的问题,这可能是一个答案。

namespace SomeNamespace
{
    public static class Extensions
    {
      public static void MyMethod(this System.Object o)
      {
        // Do something here.
      }
    }
}

您现在可以像MyMethod();在任何using SomeNamespace;拥有Extensions.MyMethod(null).

于 2012-05-13T00:19:32.963 回答
2

取决于我们正在谈论的方法类型,您可以查看扩展方法:

http://msdn.microsoft.com/en-us/library/bb383977.aspx

这使您可以轻松地向现有对象添加额外的功能。

于 2012-05-12T23:43:57.547 回答