导入一个静态方法(import a static method)

2019-07-17 15:22发布

我怎样可以从另一个C#源文件导入静态方法和使用它,而“点”?

喜欢 :

foo.cs

namespace foo
{
    public static class bar
    {
        public static void foobar()
        {
        }
    }
}

Program.cs中

using foo.bar.foobar; <= can't!

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
             foobar();
        }
    }
}

我不能只foobar(); ,但如果我写using foo; 在顶部和呼叫foobar()foo.bar.foobar()它的作品,尽管是多罗嗦。 任何解决方法吗?

Answer 1:

这是公认的答案,但要注意如下状态的答案,这是现在可以在C#6

你不能

静态方法需要在设计一个类..

静态方法为什么需要被包装成一个类?



Answer 2:

用C#6.0就可以了。

C#6.0 允许静态导入(请参阅使用静态成员)

你将能够做到:

using static foo.bar;

然后在你的Main方法,你可以这样做:

static void Main(string[] args)
{
    foobar();
}

你可以做同样的System.Console ,如:

using System;
using static System.Console;
namespace SomeTestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test Message");
            WriteLine("Test Message with Class name");
        }
   }
}

编辑:由于的Visual Studio 2015年CTP的发布,2015年1月,静态导入功能需要明确提到static信息关键词:

using static System.Console;


Answer 3:

声明一个动作代表在一个合适的范围变量,如下所示并在以后使用它:

Action foobar = () => foo.bar.foobar();

或者更简单

Action foobar = foo.bar.foobar;

我也应注意扩展方法(C#编程指南) 。 如果您在使用参数的方法,往往是相当舒适的有:

public static class bar
{
    public static void foobar(this string value)
    {
    }
}

并利用它:

 string s = "some value";
 s.foobar();

这实际上是一个更好的方法。



Answer 4:

要添加到答案已经在这里需要注意的是C#是一个非常类型化的语言是很重要的。 因此,除非方法您所在的类存在,你将永远无法做到像你在找什么。

但是,如果您添加使用:

using foo;

然后,您可以就这样的类型和方法来访问它:

bar.foo();


文章来源: import a static method