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

时间:2015-06-05 16:47:32

标签: c# asp.net .net

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

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

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

using UsefulMethods;

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

DataTable myDataTable = DataBaseStuff.GetDataTable(command, conn);

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

using UsefulMethods.DataBaseStuff;

...所以我可以直接引用没有类名的方法......

DataTable myDataTable = GetDataTable(command, conn);

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

感谢您的阅读。

1 个答案:

答案 0 :(得分:8)

使用C# 6.0,您可以使用static import

执行此操作
using static UsefulMethods.DataBaseStuff;

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

请参阅:New Language Features in 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); 
    }
}
  

当你有一套与a相关的功能时,这非常适合   您一直使用的某些域名。 System.Math将是一个   通常的例子。它还允许您直接指定   枚举类型的单个命名值,如System.DayOfWeek   上面的成员。