enum - verständnisfrage



  • Hallo,
    ich habe ein problem mit einem Array und einem enum:
    ich möchte die Arrayelemente mit den einträgen des enums ansprechen.

    class MyClass
    {
        int[] aBären;
        public enum ID
        {
            MAMABÄR=0,
            PAPABÄR=1,
            NUMBEROFIDS
        };
        public MyClass()
        {
            // es funktioniert zwar, aber gibt es keine möglichkeit
            // den Typecast einzusparen ????????
            aBären[] = new int[(int)ID.NUMBEROFIDS] { 6,7 };
        }
    
    }
    

    ich habe bereits versucht in der .NET Framework SDK und in einigen Büchern Rat zu finden.
    Aber zu diesem Thema fand ich leider nichts passendes, vielleicht kann mir jemand einen Tip / Link / Sourcecode geben ! Danke. 🕶



  • glaube wohl nicht.. (ohne anspruch auf recht)

    wenn du enum benutzt, steht explizit in der reference:

    The underlying type specifies how much storage is allocated for each enumerator. However, an explicit cast is needed to convert from enum type to an integral type. For example, the following statement assigns the enumerator Sun to a variable of the type int using a cast to convert from enum to int:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcreftheenumerationtypes.asp



  • Hallo,
    ich habe gemeint, unter VB.Net sei es möglich eine enum eines Datentypes anzulegen (nur int, short, byte, long). Das ging irgendwie mit

    Public Enum CPPCs As Byte
        ...
    End Enum
    

    . Wenn ich das Zeug nun zurückkompiliere (z.B. mit Anakrino),
    wird folgender Code für die Enum ausgegeben :

    Public Enum CPPCs
        Public Const ENTRY As CPPCs = 0
    End Enum
    

    Das entspricht genau

    public enum CPPCs
    {
        ...
    };
    

    .
    Weil der Befehl auch VB.Net überflüssig ist, muss man wohl immer explizit casten 😮 .



  • he danke, ich hab die SDK noch mal zu rate gezogen - stimmt da steht das, hab das wahrscheinlich (durch meine nicht 100%igen englischkenntnisse) nicht richtig gecheckt !
    Ich habe aber nicht aufgegeben und hab mir noch (eine umstädlichere 😞 )Lösung gesucht - über Convert.ToInt32......

    Aber Danke für alles !!!!


Anmelden zum Antworten