C#是否具有类似Java静态导入的功能?
所以不要像
那样编写代码FileHelper.ExtractSimpleFileName(file)
我可以写
ExtractSimpleFileName(file)
并且编译器会知道我的意思是来自FileHelper的方法。
答案 0 :(得分:78)
从C#6.0开始,这是可能的:
using static FileHelper;
// in a member
ExtractSimpleFileName(file)
但是,以前版本的C#没有静态导入。
您可以使用该类型的别名来结束。
using FH = namespace.FileHelper;
// in a member
FH.ExtractSimpleFileName(file)
或者,将静态方法更改为类型上的extension method - 然后您可以将其称为:
var value = file.ExtractSimpleFileName();
答案 1 :(得分:12)
不,C#中不存在此功能。您需要指定静态方法所属的类,除非您已经在同一个类的方法中。
在C#中虽然你有extension methods哪种模仿这个。
答案 2 :(得分:5)
时间推移......看起来C#可能会在下一个版本中获得静态导入,请参阅http://msdn.microsoft.com/en-us/magazine/dn683793.aspx进行预览。
using System;
using System.Console; // using the Console class here
public class Program
{
public static void Main()
{
// Console.WriteLine is called here
WriteLine("Hello world!");
}
}
'Roslyn'C#编译器的official documentation将该功能列为'完成'
答案 3 :(得分:4)
using static System.Console;
因此代码可能如下所示:
using static System.Console;
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
WriteLine("My test message");
}
}
}
早期计划的C#6.0版本具有静态导入,不含 static
关键字。
有关C#6.0中的其他新功能,请参阅:New Language Features in C# 6