Ich schaue mir einige der neuen Funktionen in C # 6 an, insbesondere "using static".
using static ist eine neue using-Klausel, mit der Sie statische Elemente von Typen direkt in den Gültigkeitsbereich importieren können.
(Ende des Blogposts)
Die Idee ist wie folgt, laut ein paar Tutorials, die ich gefunden habe,
Anstatt:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello world!");
Console.WriteLine("Another message");
}
}
Sie können die wiederholte Console
-Anweisung weglassen, indem Sie die neue C # 6-Funktion zur Verwendung statischer Klassen verwenden:
using System.Console;
// ^ `.Console` added.
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
} // ^ `Console.` removed.
}
Dies scheint jedoch nicht für mich zu funktionieren. Bei der Anweisung using
erhalte ich eine Fehlermeldung mit den Worten:
"A '
using namespace
'Direktive kann nur auf Namespaces angewendet werden; 'Console
' ist ein Typ, kein Namespace. Betrachten Sie ein 'using static
'Direktive statt "
Ich verwende Visual Studio 2015 und habe die Build-Sprachversion auf "C # 6.0" eingestellt
Was gibt? Ist das Beispiel des msdn-Blogs falsch? Warum funktioniert das nicht?
Der Blog-Beitrag wurde jetzt aktualisiert, um die neuesten Aktualisierungen wiederzugeben. Hier ist jedoch ein Screenshot, falls der Blog ausfällt:
Es sieht so aus, als ob sich die Syntax seit dem Schreiben dieser Blog-Beiträge geringfügig geändert hat. Fügen Sie Ihrer include-Anweisung static
hinzu, wie in der Fehlermeldung angegeben:
using static System.Console;
// ^
class Program
{
static void Main()
{
WriteLine("Hello world!");
WriteLine("Another message");
}
}
Dann wird Ihr Code kompiliert.
Beachten Sie, dass dies in C # 6.0 nur für Member funktioniert, die als static
deklariert wurden.
Betrachten Sie zum Beispiel System.Math
:
public static class Math {
public const double PI = 3.1415926535897931;
public static double Abs(double value);
// <more stuff>
}
Bei using static System.Math
Können Sie einfach Abs();
verwenden.
Sie müssten jedoch immer noch PI
voranstellen, da es sich nicht um ein statisches Mitglied handelt: Math.PI;
.
In C # 7.2 (und möglicherweise niedriger) sollte dies nicht der Fall sein. const
Werte wie PI
können ebenfalls verwendet werden.
Das Schlüsselwort static
in einer using
-Anweisung importiert nur den angegebenen Typ (und seine verschachtelten Typen). Außerdem darf der Typname nicht mehr angegeben werden. Fügen Sie einfach statische Aufladung zu Ihrer Verwendung hinzu.
Hinweis: Verwenden Sie diese Funktion nur, wenn die beiden Klassen logisch eng miteinander verwandt sind, da sonst der Code nur schwer gelesen werden kann.