Как использовать функцию C # 6 «Использование статического»?

Я рассматриваю пару новых функций на C # 6, в частности, «использование статического» .

использование static – это новый способ использования, который позволяет импортировать статические члены типов непосредственно в область видимости.
(Нижняя часть сообщения в блоге)

Идея заключается в следующем, в соответствии с несколькими учебниками, которые я нашел,
Вместо:

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

Вы можете опустить повторный оператор Console , используя новую функцию C # 6 для использования статических classов:

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

Однако, похоже, это не работает для меня. Я получаю сообщение об ошибке при using инструкции:

«Директива« using namespace »может применяться только к пространствам имен,« Console »- это тип, а не пространство имен. Вместо этого using static вместо этого директиву« using static »

Я использую visual studio 2015, и у меня есть версия языка сборки, установленная на «C # 6.0»,

Что дает? Неверный пример блога msdn? Почему это не работает?


Сообщение в блоге теперь обновлено, чтобы отразить последние обновления, но вот скриншот на случай, если блог опустится:

блог

Похоже, что синтаксис слегка изменился, так как эти записи в блоге были написаны. Как следует из сообщения об ошибке, добавьте static в оператор include:

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

При using static System.Math вы можете просто использовать Abs(); ,
Тем не менее, вам все равно придется префикс PI потому что он не является статическим членом: Math.PI; ,

В C # 7.2 (и, возможно, ниже) это не должно быть, могут использоваться значения const такие как PI .

static ключевое слово в операторе using будет импортировать только тот, указанный тип (и его вложенные типы). Кроме того, вы больше не должны указывать имя типа. Так что просто добавьте статику к использованию.

Примечание. Используйте эту функцию только в том случае, если два classа логически тесно связаны, в противном случае чтение кода довольно сложно.

Давайте будем гением компьютера.