【问题标题】:Is it possible to reference a method in a static class without referencing the class?是否可以在不引用类的情况下引用静态类中的方法?
【发布时间】:2015-06-05 16:47:32
【问题描述】:

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

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);

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

感谢您的阅读。

【问题讨论】:

  • 不,不可能
  • 总是有Reflection

标签: c# asp.net .net


【解决方案1】:

使用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); 
    }
}

当您拥有一组与 您一直使用的某个域。 System.Math 将是一个 常见的例子。它还允许您直接指定 枚举类型的单个命名值,例如 System.DayOfWeek 上面的成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2023-04-05
    • 2012-12-29
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多