2017-07-20 5 views
2

Ich habe diese Klasse, wo ich eine private Enum verwenden. Ich möchte C# 6 „Die Verwendung von statischen“ -Funktion, wie folgt verwenden:Warum ist es nicht möglich, die Funktion "Static verwenden" mit der privaten Enumeration zu verwenden? Gibt es eine Alternative?

using static ConsoleForSimpleTests.Foo.MyEnum; 

namespace ConsoleForSimpleTests 
{ 
    public class Foo 
    { 
     private enum MyEnum { I, DonT, Want, This, To, Be, Public } 

     private MyEnum value; 

     public void SomeMethod() 
     { 
      switch (value) 
      { 
        case I: 
        case DonT: 
        case Want: 
        case This: 
        case To: 
        case Be: 
        case Public: 
         break; 
      } 
     } 
    } 
} 

Hinweis: Dies gilt nicht kompilieren und ich verstehe, warum es auf die Schutzstufe für MyEnum zurückzuführen ist. Wenn ich den Zugriffsmodifizierer entweder intern oder öffentlich ändere, funktioniert es. Ich frage mich, ob das nicht möglich ist, und wenn ja, warum ist das nicht möglich?

+1

Entschuldigung, ich habe diesen Teil der Frage klar übersprungen. –

+0

@BJ Myers 'using static' funktioniert tatsächlich für enum-Werte. Das Problem hier ist der Zugriffsmodifizierer. Wenn du die private enum als intern oder öffentlich änderst funktioniert es – taquion

+0

@ taquion Du hast Recht, mein Schlechter - ich habe deine Frage nicht genau genug gelesen. –

Antwort

2

Wenn dies möglich wäre und Sie eine andere Klasse in derselben Datei hätten, wären die von Ihnen importierten Symbole in dieser Klasse nicht sichtbar.

Das wäre verwirrend; Das ist wahrscheinlich der Grund, warum das nicht funktioniert.

Verwandte Themen