Jak korzystać z funkcji C # 6 "Using static"?
Przeglądam kilka nowych funkcji w C # 6, a konkretnie, "używanie statycznych" .
Według kilku samouczków, które znalazłem, pomysł wygląda następująco]} Zamiast:using static jest nowym rodzajem klauzuli using, która pozwala importować statyczne elementy typów bezpośrednio do zakresu.
(na dole bloga)
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Można pominąć powtórzone Console
stwierdzenie, używając nowego C# 6 funkcja używania klas statycznych:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
Jednak to chyba nie działa. Dostaję błąd w stwierdzeniu using
, mówiącym:
"dyrektywa'
using namespace
'może być stosowana tylko do przestrzeni nazw;'Console
' jest typem, a nie przestrzenią nazw. Rozważmy dyrektywę "using static
"zamiast"
Używam visual studio 2015 i mam wersję językową kompilacji ustawioną na "C# 6.0"
Co się dzieje? Jest przykładem bloga msdn źle? Dlaczego to nie działa?Wpis na blogu został zaktualizowany, aby odzwierciedlać najnowsze aktualizacje, ale oto zrzut ekranu na wypadek, gdyby blog upadł:
2 answers
Wygląda na to, że składnia nieco się zmieniła od czasu napisania tych wpisów na blogu. Jak sugeruje komunikat o błędzie, dodaj static
do instrukcji include:
using static System.Console;
// ^
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
}
}
Wtedy twój Kod się skompiluje.
Zauważ, że w C # 6.0 będzie to działać tylko dla członków zadeklarowanych jako static
.
Na przykład rozważmy System.Math
:
public static class Math {
public const double PI = 3.1415926535897931;
public static double Abs(double value);
// <more stuff>
}
Kiedy using static System.Math
, możesz po prostu użyć Abs();
.
Jednak nadal będziesz musiał przedrostek PI
, ponieważ nie jest on członkiem statycznym: Math.PI;
.
W C# 7.2 (i może niżej) nie powinno tak być, const
wartości takie jak PI
mogą być również używane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 11:34:33
Słowo kluczowe static
w instrukcji using
zaimportuje tylko jeden, określony typ (i typy zagnieżdżone). Ponadto nie wolno już podawać nazwy typu. Więc po prostu dodaj statyczne do korzystania.
Uwaga: używaj tej funkcji tylko wtedy, gdy te dwie klasy są logicznie blisko ze sobą powiązane, w przeciwnym razie czytanie kodu jest dość trudne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 11:51:42