Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah kita dapat meningkatkan perwakilan rentetan penghitungan menggunakan enum jenis-selamat dan penukaran jenis eksplisit?
Skim sebelumnya menggunakan atribut tersuai untuk mendapatkan perwakilan rentetan penghitungan. Walaupun fungsi itu sah, ia mungkin kelihatan panjang. Berikut adalah kaedah alternatif untuk menggunakan mod penghitungan selamat jenis:
Model ini mentakrifkan contoh penghitungan yang jelas, yang mengandungi perwakilan rentetan dan nilai.
<code class="language-csharp">public sealed class AuthenticationMethod { private readonly string name; private readonly int value; public static readonly AuthenticationMethod FORMS = new AuthenticationMethod(1, "FORMS"); public static readonly AuthenticationMethod WINDOWSAUTHENTICATION = new AuthenticationMethod(2, "WINDOWS"); public static readonly AuthenticationMethod SINGLESIGNON = new AuthenticationMethod(3, "SSN"); private AuthenticationMethod(int value, string name) { this.name = name; this.value = value; } public override string ToString() { return name; } }</code>Kaedah mengembalikan borang perwakilan rentetan.
ToString()
Penukaran Jenis Berbeza
Untuk membolehkan penukaran jenis eksplisit, anda boleh menambah ahli statik untuk pemetaan ke kelas:
isi kamus dalam pembina kelas:
<code class="language-csharp">private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();</code>
Akhirnya, tambahkan pengendali penukaran jenis pengguna -ditentukan:
<code class="language-csharp">instance[name] = this;</code>
Ini membolehkan anda dengan jelas menukar rentetan ke
contoh untuk membuat proses penukaran jenis lebih langsung.<code class="language-csharp">public static explicit operator AuthenticationMethod(string str) { AuthenticationMethod result; if (instance.TryGetValue(str, out result)) return result; else throw new InvalidCastException(); }</code>
Atas ialah kandungan terperinci Bagaimanakah kita dapat meningkatkan perwakilan rentetan penghitungan menggunakan enum jenis-selamat dan penukaran jenis eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!