Rzucam okiem na kilka nowych funkcji w C # 6, a konkretnie na „używanie statyczne” .
using static to nowy rodzaj klauzuli using, która umożliwia importowanie statycznych elementów członkowskich typów bezpośrednio do zakresu.
(U dołu wpisu na blogu)
Pomysł jest następujący, zgodnie z kilkoma samouczkami, które znalazłem,
Zamiast:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Możesz pominąć powtarzającą się Console
instrukcję, korzystając z nowej funkcji C # 6 używającej klas statycznych:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
Jednak wydaje mi się, że to nie działa. Otrzymuję błąd w using
wyciągu, mówiąc:
using namespace
Dyrektywę „ ” można zastosować tylko do przestrzeni nazw; „Console
” jest typem, a nie przestrzenią nazw.using static
Zamiast tego rozważ dyrektywę „” ”
Używam programu Visual Studio 2015 i mam wersję języka kompilacji ustawioną na „C # 6.0”
Co daje? Czy przykład bloga msdn jest nieprawidłowy? Dlaczego to nie działa?
Wpis na blogu został zaktualizowany, aby odzwierciedlał najnowsze aktualizacje, ale oto zrzut ekranu na wypadek, gdyby blog przestał działać:
System.Math
konkretnie zMath.PI
. Kiedy używamusing static System.Math
, metody takie jakSqrt()
praca, ale nie stałePI
. Muszę kontynuować pisanieMath.PI
lub kod się nie kompiluje. Ciekaw jestem, dlaczego to nie działa. Czy powinienem zadać nowe pytanie w tej sprawie?PI
nie jest statycznym członkiemMath
klasy. To jest stała. Krótko mówiąc: członek musi zostać zadeklarowany jakostatic
.using const System.Math;
:)static
Słowo nausing
rachunku będzie importować tylko jeden, określony typ (i to zagnieżdżone typy). Ponadto nie możesz już podawać nazwy typu. Więc po prostu dodaj statyczne do swojego używania.Uwaga: użyj tej funkcji tylko wtedy, gdy dwie klasy są logicznie powiązane, w przeciwnym razie czytanie kodu będzie dość trudne.
źródło