Nej, en struct lämpar sig inte. Det borde räcka fint med att "casta" enum-värdet.
Response.Write(((int)TestEnum.BBB).ToString());
7 svar · 303 visningar · startad av Dino
Hur gör jag för att få ut siffran 2 från TestEnum.BBB. Går det, eller skall jag köra på struct modellen.
public enum TestEnum : int
{
AAA = 1,
BBB,
CCC,
DDD
}
public struct TestStruct
{
public const int AAA = 1;
public const int BBB = 2;
public const int CCC = 3;
public const int DDD = 4;
}
...
Response.Write(TestStruct.AAA.ToString()); // = 1
Response.Write(TestEnum.BBB.ToString()); // = BBB
Nej, en struct lämpar sig inte. Det borde räcka fint med att "casta" enum-värdet.
Response.Write(((int)TestEnum.BBB).ToString());
Jag har för mig att du kan få ut det med GetHashCode() som returnerar en Int32.
Response.Write(TestEnum.BBB.GetHashCode());
GetHashCode() returnerar ett UNIK id för just detta objekt och behöver inte alls vara det värdet som finns i enumen.
Gladh skrev:
GetHashCode() returnerar ett UNIK id för just detta objekt och behöver inte alls vara det värdet som finns i enumen.
Vad menar du?
Om man kör den här koden:
Public Class EnumTest
Public Enum Manad
Januari = 1
Februari = 2
Mars = 3
April = 4
Maj = 5
Juni = 6
Juli = 7
Augusti = 8
September = 9
Oktober = 10
November = 11
December = 12
End Enum
Public Function Test(ByVal strMonth As Manad)
Return strMonth.GetHashCode()
End Function
End Class
och sen...:
Module Module1
Sub Main()
Dim MyEnum As New EnumTest
Console.WriteLine(MyEnum.Manad.Februari.GetHashCode())
End Sub
End Module
...så skriver den ut "2", vilket ser rätt ut?
Ok, tackar. Båda alternativen funkar. I Enum classen så är GetHashCode overridden och verkar få värdet dess constant har.
I Enum classen så är GetHashCode overridden och verkar få värdet dess constant har.
Där ser man, det hade jag ingen anning om, man lär sig något nytt varje dag.
- Magnus