Saya memiliki kode berikut:
// Obtain the string names of all the elements within myEnum
String[] names = Enum.GetNames( typeof( myEnum ) );
// Obtain the values of all the elements within myEnum
Array values = Enum.GetValues( typeof( myEnum ) );
// Print the names and values to file
for ( int i = 0; i < names.Length; i++ )
{
print( names[i], values[i] );
}
Namun, saya tidak dapat mengindeks nilai. Adakah cara yang lebih mudah untuk melakukan ini?
Atau apakah saya melewatkan sesuatu sama sekali!
Enum.GetName(typeof(MyEnum), val), (int)val)
di mana keluaran menyediakan nama dan nomor pencacahan.Cast<T>
melihat hasilnya:Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>()...
Anda perlu mentransmisikan array - array yang dikembalikan sebenarnya dari tipe yang diminta, yaitu
myEnum[]
jika Anda memintatypeof(myEnum)
:Lalu
values[0]
dllsumber
Anda dapat mentransmisikan Array itu ke berbagai jenis Array:
atau jika Anda menginginkan nilai integer:
Anda tentu saja dapat mengulang larik yang dicor tersebut :)
sumber
Bagaimana dengan daftar kamus?
dan tentu saja Anda dapat mengubah tipe nilai kamus menjadi apa pun nilai enum Anda.
sumber
Solusi lain, dengan kemungkinan menarik:
sumber
Ini satu lagi. Kami memiliki kebutuhan untuk memberikan nama yang bersahabat untuk EnumValues kami. Kami menggunakan System.ComponentModel.DescriptionAttribute untuk menampilkan nilai string kustom untuk setiap nilai enum.
Digunakan
Ini akan berakhir dengan mengembalikan "Sesuatu 1", "Sesuatu 2"
sumber
Bagaimana dengan menggunakan foreach loop, mungkin Anda bisa menggunakannya?
sesuatu seperti itu mungkin?
sumber
Pertanyaan lama, tetapi pendekatan yang sedikit lebih bersih menggunakan LINQ
.Cast<>()
sumber
Array memiliki metode GetValue (Int32) yang dapat Anda gunakan untuk mengambil nilai pada indeks yang ditentukan.
Array.GetValue
sumber
Anda dapat menyederhanakan ini menggunakan string format. Saya menggunakan potongan berikut dalam pesan penggunaan:
Penentu format D memformat nilai enum sebagai desimal. Ada juga penentu X yang memberikan keluaran heksadesimal.
Penentu G memformat enum sebagai string. Jika atribut Flags diterapkan ke enum maka nilai gabungan juga didukung. Ada penentu F yang bertindak seolah-olah Bendera selalu ada.
Lihat Enum.Format ().
sumber
Dalam hasil Enum.GetValues, mentransmisikan ke int menghasilkan nilai numerik. Menggunakan ToString () menghasilkan nama yang akrab. Tidak diperlukan panggilan lain ke Enum.GetName.
sumber
Berikut adalah cara sederhana untuk mengulang melalui objek Enum kustom Anda
sumber
Pertanyaan kuno, tetapi jawaban 3Dave memberikan pendekatan termudah. Saya membutuhkan sedikit metode pembantu untuk menghasilkan skrip Sql untuk memecahkan kode nilai enum dalam database untuk debugging. Ini bekerja dengan baik:
Saya memilikinya dalam metode statis, jadi penggunaannya adalah:
sumber