Wie C# 6 using static
Funktion sollte in richtiger Weise verwendet werden? Es sieht wirklich gut aus für Fälle wie Verkürzung string.Format (CultureInfo.InvariantCulture, "Some format");
bis Format (InvariantCulture, "Some format");
, aber ist es immer so?Der richtige Weg zur Verwendung von C# 6 "using static" -Funktion
Nehmen Sie dies zum Beispiel. Sie haben enum
wie folgt aus:
enum Enum { Value1, Value2 }
Und Sie entscheiden, um es wie dies in Code zu verwenden:
using static {Namespace}.Enum;
// ...
var value = Value1;
Letzten auf Sie entscheiden Value1
ein class
genannt zu erstellen. Dann wird Ihr Code var value = Value1
Compiler-Fehler:
'Value1' is a type, which is not valid in the given context
oder anderen Fall. Sie haben zwei Klassen mit unterschiedlichen static
Methoden:
class Foo {
public static void Method1() { }
}
class Foo2 {
public static void Method2() { }
}
Und Sie verwenden es in der 3. class
wie
using static {Namespace}.Foo;
using static {Namespace}.Foo2;
// ...
class Bar {
void Method() {
Method1();
Method2();
}
}
der gut arbeitet. Aber wenn Sie sich entscheiden, Method2
in Foo
class
dieser Code einführen wird Compiler-Fehler:
The call is ambiguous between the following methods or properties: 'Foo.Method2()' and 'Foo2.Method2()'
So ist meine Frage, was ist der richtige Weg using static
Funktion zu verwenden?
Ich sehe nicht, wie 'Static 'hier ist etwas Besonderes. Sie haben Arbeitscode. Sie führen ein neues Element ein, das bedeutet, dass es jetzt eine Mehrdeutigkeit gibt, wo es vorher noch nicht existierte. Sie müssen Ihren Code expliziter machen. Genauso verhält es sich mit nicht-statischem 'using', wenn ein neuer Typ zu einem Namespace hinzugefügt wird und der Name dieses Typs mit dem Namen eines anderen Typs in einem anderen Namespace übereinstimmt. –
@Damien_The_Unbeliever Also, 'static statistics' zu benutzen, schafft nur einen größeren Bereich für Namenskollisionen? –
Offensichtlich ist es nicht, wenn Sie den Compiler damit confuzzle. Und sicher * erhöhen * Sie die Wahrscheinlichkeit, dass die Bezeichner nicht eindeutig sind. Es funktioniert in der Regel gut, wenn Sie eine Quelldatei pro Typ verwenden, ein Programmierstil, der ziemlich häufig vorkommt. Dreht meinen Propeller nicht, sondern folgt immer den Kodierungsrichtlinien Ihres Teams. –