有没有办法在类/命名空间层次结构中声明静态方法,以便可以直接寻址该方法而无需引用其类名?例如,如果我有这个命名空间和类...
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语句中找不到静态类,所以我猜这只适用于名称空间.那么,有没有什么方法可以让我的代码知道我所指的静态类,而不是每次调用其中一个静态方法时都引用它?
谢谢你的阅读.
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成员.