Di Jawa, dimungkinkan untuk memiliki metode di dalam enum.
Apakah ada kemungkinan seperti itu di C # atau hanya koleksi string dan hanya itu?
Saya mencoba menimpa ToString()
tetapi tidak dapat dikompilasi. Apakah seseorang memiliki sampel kode sederhana?
c#
enums
enumeration
Eya
sumber
sumber
Jawaban:
Anda dapat menulis metode ekstensi untuk tipe enum:
sumber
Anda dapat menulis metode ekstensi untuk enum Anda:
Cara: Membuat Metode Baru untuk Pencacahan (Panduan Pemrograman C #)
sumber
Pilihan lain adalah menggunakan Kelas Enumerasi yang dibuat oleh Jimmy Bogard .
Pada dasarnya, Anda harus membuat kelas yang mewarisi darinya
Enumeration
. Contoh:Kemudian Anda dapat menggunakannya seperti enum, dengan kemungkinan untuk memasukkan metode di dalamnya (antara lain):
Anda dapat mengunduhnya dengan NuGet .
Walaupun implementasi ini bukan asli dalam bahasa, sintaks (konstruksi dan penggunaan) cukup dekat dengan bahasa yang mengimplementasikan enum secara asli lebih baik daripada C # ( misalnya Kotlin ).
sumber
Nggak. Anda dapat membuat kelas, lalu menambahkan banyak properti ke kelas untuk agak meniru enum, tapi itu tidak benar-benar hal yang sama .
Pola yang lebih baik adalah dengan meletakkan metode Anda di kelas yang terpisah dari emum Anda.
sumber
Karena saya menemukan, dan membutuhkan kebalikan dari enum to string, berikut adalah solusi Generik:
Ini juga mengabaikan case dan sangat berguna untuk mem-parsing REST-Response ke enum Anda untuk mendapatkan lebih banyak keamanan jenis. Semoga ini membantu seseorang
sumber
C # Tidak mengizinkan penggunaan metode dalam enumerator karena ini bukan prinsip berbasis kelas, melainkan array 2 dimensi dengan string dan nilai.
Penggunaan kelas sangat tidak disarankan oleh Microsoft dalam hal ini, gunakan (data) struct (ures) sebagai gantinya; STRUCT dimaksudkan sebagai kelas ringan untuk data dan penangannya dan dapat menangani fungsi dengan baik. C # dan kompilernya tidak memiliki kemampuan pelacakan dan efisiensi seperti yang diketahui dari JAVA, di mana semakin sering suatu kelas / metode tertentu digunakan semakin cepat ia berjalan dan penggunaannya menjadi 'diantisipasi'. C # tidak punya itu, jadi untuk membedakan, gunakan STRUCT bukan CLASS.
sumber