是否可以在不引用类的情况下引用静态类中的方法?

Cam*_*olf 2 .net c# asp.net

有没有办法在类/命名空间层次结构中声明静态方法,以便可以直接寻址该方法而无需引用其类名?例如,如果我有这个命名空间和类...

namespace UsefulMethods
{
    public static class DataBaseStuff
    {
        public static DataTable GetDataTable(String command, SqlConnection conn)
        {
            dt = new DataTable();
            dostuff...
            return dt;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我写了一些使用这个类的代码,我把声明...

using UsefulMethods;
Run Code Online (Sandbox Code Playgroud)

...在我的代码顶部,我可以通过...返回给我的DataTable

DataTable myDataTable = DataBaseStuff.GetDataTable(command, conn);
Run Code Online (Sandbox Code Playgroud)

我想也许我可以引用一个带有using语句的静态类,就像...

using UsefulMethods.DataBaseStuff;
Run Code Online (Sandbox Code Playgroud)

...所以我可以只引用没有这个类名的方法......

DataTable myDataTable = GetDataTable(command, conn);
Run Code Online (Sandbox Code Playgroud)

......但这似乎不起作用.intellisense在using语句中找不到静态类,所以我猜这只适用于名称空间.那么,有没有什么方法可以让我的代码知道我所指的静态类,而不是每次调用其中一个静态方法时都引用它?

谢谢你的阅读.

Hab*_*bib 8

使用C#6.0,您可以使用静态导入来完成此操作

using static UsefulMethods.DataBaseStuff;
Run Code Online (Sandbox Code Playgroud)

在那之前你不能.您必须使用静态方法的类名.

请参阅:C#6中的新语言功能

使用静态

该功能允许导入所有类型的可访问静态成员,使其在后续代码中无需限定即可使用:

using static System.Console;
using static System.Math;
using static System.DayOfWeek;
class Program
{
    static void Main()
    {
        WriteLine(Sqrt(3*3 + 4*4)); 
        WriteLine(Friday - Monday); 
    }
}
Run Code Online (Sandbox Code Playgroud)

当您拥有一组与您一直使用的某个域相关的功能时,这非常适用.System.Math就是一个常见的例子.它还允许您直接指定枚举类型的各个命名值,如上面的System.DayOfWeek成员.