Как использовать функцию С# 6 "Использование статического"?
Я смотрю на пару новых функций в С# 6, в частности,
"using static".
с использованием static - это новый вид использования, который позволяет импортировать статические элементы типов непосредственно в область. (Нижняя часть сообщения в блоге)
Идея заключается в следующем, в соответствии с несколькими учебниками, которые я нашел,
Вместо:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Вы можете опустить повторный оператор Console
, используя новую функцию С# 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, и у меня есть версия языка сборки, установленная на "С# 6.0"
Что дает? Неверный пример блога msdn? Почему это не работает?
Ответы
Ответ 1
Похоже, что синтаксис слегка изменился, поскольку эти записи в блоге были написаны. Как следует из сообщения об ошибке, добавьте static
в оператор include:
using static System.Console;
// ^
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
}
}
Затем ваш код будет скомпилирован.
Обратите внимание, что это будет работать только для членов, объявленных как 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;
.