我正在查看C# 6中的一些新功能,具体来说是"using static"。
using static是一种新的using子句,它使得您可以直接将类型的静态成员导入到作用域中。
(博客文章底部)
根据我找到的几个教程所述,其想法如下:
不再是:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
通过使用C# 6的静态类功能,您可以省略重复的Console
语句:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
然而,这对我似乎并没有起作用。在using
语句上出现了错误,提示:
"'
using namespace
'指令只能应用于命名空间;'Console
'是一种类型,而不是命名空间。考虑使用'using static
'指令。"
我正在使用Visual Studio 2015,并将构建语言版本设置为"C# 6.0"。
怎么回事?Msdn博客的示例有误吗?为什么不能正常工作?
该博客文章现已更新以反映最新的更新情况,但以下是一张截图,以防博客失效:
System.Math
中的Math.PI
常量有关。当我使用using static System.Math
时,Sqrt()
这样的方法可以正常工作,但是像PI
这样的常量却不能用,必须继续写Math.PI
才行,否则代码就编译不过。我很好奇为什么会出现这种情况,是否应该提一个新问题来询问? - skwearPI
不是Math
类的静态成员,而是一个常量。简单来说:该成员必须声明为static
。 - Cerbrususing const System.Math;
:) - Filip Skakun