导入静态方法

thk*_*ang 16 c# static-import

如何从另一个c#源文件导入静态方法并在没有"点"的情况下使用它?

喜欢 :

foo.cs

namespace foo
{
    public static class bar
    {
        public static void foobar()
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Program.cs中

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

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
             foobar();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能只是foobar();,但如果我写using foo;在顶部并foobar()尽可能地打电话foo.bar.foobar(),尽管很冗长.对此有任何解决方法吗?

Hab*_*bib 32

使用C#6.0,你可以.

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

你将能够做到:

using static foo.bar;
Run Code Online (Sandbox Code Playgroud)

然后在你的Main方法中你可以做到:

static void Main(string[] args)
{
    foobar();
}
Run Code Online (Sandbox Code Playgroud)

您也可以这样做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");
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:自2015年1月发布Visual Studio 2015 CTP以来,静态导入功能需要明确提及static关键字,如:

using static System.Console;
Run Code Online (Sandbox Code Playgroud)


mdc*_*sta 8

这是已接受的答案,但请注意,正如下面的答案所述,现在可以在C#6中实现

你不能

静态方法需要按类设计.

为什么需要将静态方法包装到类中?