命名空间内的方法c#

时间:2012-05-12 23:41:37

标签: c# class syntax namespaces

有没有办法在没有声明c#中的类的情况下调用名称空间内的函数。

例如,如果我有两个完全相同的方法并且应该在我的所有C#项目中使用,那么有没有办法让这些函数成为一个dll而只是说'Using myTwoMethods'on顶部并开始使用方法而不声明类?

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

我想这样做: 的MyMethod();

谢谢, 罗希特夏尔

4 个答案:

答案 0 :(得分:27)

2015年更新: 不,你不能在C#中创建“自由函数”,但从C#6开始,你将能够在不提及类名的情况下调用静态函数。 C# 6 will have the "using static" feature允许这种语法:

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

SomeOtherFile.cs:

using static MyClass;

void SomeMethod() {
    MyMethod();
}

答案 1 :(得分:12)

您不能在类之外声明方法,但可以使用类库项目中的静态帮助程序类来执行此操作。

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

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

HelperClass.HelperMethod();

答案 2 :(得分: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))。

答案 3 :(得分:2)

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

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

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