如何使用 C # 6的“使用静态”特性?

我看了一些 新功能 C # 6, “使用静态”。

使用 static 是一种新的 using 子句,可以将类型的静态成员直接导入到作用域中。
(博客底部)

根据我找到的一些教程,我的想法如下:
而不是:

using System;


class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}

您可以省略重复的 Console语句,使用使用静态类的新 C # 6特性:

using System.Console;
//           ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}

然而,这似乎并不适合我。我得到了一个错误的 using声明,说:

”‘ using namespace’指令只能应用于命名空间; ‘ Console’是一种类型,而不是命名空间。考虑改为‘ using static’指令”

我正在使用可视化工作室2015年,我有构建语言版本设置为 “ C # 6.0”

怎么了? msdn 博客的例子是不是不正确? 为什么这个不起作用?


博客文章现在已经更新以反映最新的更新,但这里有一个截图,以防博客关闭:

blog

76421 次浏览

自从那些博客文章被写出来以后,语法似乎发生了轻微的变化。正如错误消息建议的那样,在 include 语句中添加 static:

using static System.Console;
//      ^
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
}
}

然后,您的代码将被编译。


注意,在 C # 6.0中,这只适用于声明为 static的成员。

例如,考虑 System.Math:

public static class Math {
public const double PI = 3.1415926535897931;
public static double Abs(double value);
// <more stuff>
}

using static System.Math时,你可以只使用 Abs();
但是,您仍然必须使用前缀 PI,因为它不是静态成员: Math.PI;

从 C # 7.2版本开始,情况不应该是这样的,也可以使用像 PI这样的 const值。

using语句上的 static关键字将只导入一个指定的类型(以及它的嵌套类型)。此外,您不能再提供类型名称。所以只需要在使用中添加静态。

注意: 请只在两个类逻辑上密切相关时使用此特性,否则会使阅读代码变得相当困难。