[英]Quickly reference static methods
是否有可能在不引用其类的情况下调用方法?
例如,您有一个帮助器类:
class HelperTools
{
public static void DoWork()
{ /*...*/ }
}
然后您需要调用它:
class MainClass
{
public static void Main()
{
HelperTools.DoWork();
}
}
是否可以调用DoWork();
没有参考? 像这样:
public static void Main()
{
DoWork();
}
只是为了简单起见。
不太完全,但是以下5种模式可以使您接近:
namespace My.Namespace
{
using H = MyHelperClass;
public class MyHelperClass
{
public static void HelperFunc1()
{
Console.WriteLine("Here's your help!");
}
}
public class MyHelperClass2
{
public static void HelperFunc4()
{
Console.WriteLine("Here's your help!");
}
}
public interface IHelper{ }
public static class HelperExtensions
{
public static void HelperFunc3(this IHelper self)
{
Console.WriteLine("Here's your help!");
}
}
public class MyClass : MyHelperClass2, IHelper
{
private static readonly Action HelperFunc2 = MyHelperClass.HelperFunc1;
private static void HelperFunc5()
{
Console.WriteLine("Here's your help!");
}
public void MyFunction()
{
//Method 1 use an alias to make your helper class name shorter
H.HelperFunc1();
//Method 2 use a class property
HelperFunc2();
//Method 3 extend an interface that has extension methods.
//Note: you'll have to use the this keyword when calling extension
this.HelperFunc3();
//Method 4 you have access to methods on classes that you extend.
HelperFunc4();
//Method 5 put the helper method in your class
HelperFunc5();
}
}
}
否。Java具有这样的静态导入概念,但是C#没有。 (IMO,不知道实现所在位置的裸露DoWork()
是不理想的。)
您可以在不引用类名称的情况下调用DoWork
的唯一位置是在类本身内。 例如,如果您向HelperTools
添加非静态方法:
public void foo()
{
DoWork();
}
即使foo()
不是静态的,也可以从其中调用DoWork
。
迟了几年,但这也许会帮助别人...
使用using static
指令引用静态类:( 在C#6中引入 )
using static HelperTools;
class MainClass
{
public static void Main()
{
DoWork();
}
}
---------------- HelperTools.cs--------------------
class HelperTools
{
public static void DoWork()
{ /*...*/ }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.