2010-03-18 11 views
4

J'essaie d'accéder à l'énumération privée de ma classe. Mais je ne comprends pas la différence nécessaire pour le faire fonctionner par rapport aux autres membres;Comment implémenter cette énumération publique accessible

Si cela fonctionne:

 
private double dblDbl = 2; 

//misc code 

public double getDblDbl{ get{ return dblDbl; } } 

Pourquoi ne puis-je pas le faire avec ENUM?

 
private enum myEnum{ Alpha, Beta}; 

//misc code 

public Enum getMyEnum{ get{ return myEnum; } } 
//throws "Window1.myEnum" is a "type" but is used like a variable 
+2

Pourquoi préfixez-vous les noms de propriétés avec "get"? C#! = Java –

Répondre

5

Vous avez 2 très différents les choses se passent ici.

Dans le premier exemple, vous définissez un champ privé d'un type public. Vous renvoyez ensuite une instance de ce type déjà public via une méthode publique. Cela fonctionne parce que le type lui-même est déjà public.

Dans le second exemple, vous définissez un type privé, puis renvoyez une instance via une propriété publique. Le type lui-même est privé et ne peut donc pas être exposé publiquement.

Un autre exemple équivalent pour le second cas serait la suivante

public enum MyEnum { Alpha, Beta } 
// ... 
private MyEnum _value; 
public MyEnum GetMyEnum { get { return _value; } } 
+0

Je pense que vous voulez dire 'public MyEnum GetMyEnum {get {return _value; }} ' –

+0

@Travis, oui vous avez raison. Merci pour la correction (mise à jour) – JaredPar

+0

Ahhhh, ok, je comprends ce qui se passe maintenant, merci :) Jamais vraiment utilisé Enums avant, donc d'avoir à me mettre la tête autour d'eux à un certain point – Psytronic

3

L'énumération doit être public pour d'autres types peuvent faire référence - vous souhaitez stocker une référence privée à un exemple de cette énumération:

public enum myEnum { Alpha, Beta } 

public class Foo 
{ 
    private myEnum yourEnum = myEnum.Alpha; 
    public myEnum getMyEnum 
    { 
     get { return yourEnum; } 
    } 
} 
0

Dans votre premier exemple, vous déclarez un champ de type double, puis déclarant une propriété qui y accède. Dans votre second exemple, vous déclarez un type énuméré, puis essayez de renvoyer le type dans une propriété. Vous devez déclarer le type énuméré, puis déclarer un champ qui l'utilise:

public enum MyEnum{ Alpha, Beta}; 

private MyEnum myEnum = MyEnum.Alpha; 

//misc code 

public Enum getMyEnum{ get{ return myEnum; } } 

Le type énuméré doit également être rendue publique parce que la propriété qui l'utilise est public.