Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara menghuraikan rentetan ke dalam enum di C#?

Bagaimana cara menghuraikan rentetan ke dalam enum di C#?

Susan Sarandon
Susan Sarandonasal
2025-02-02 00:32:10794semak imbas

How to Parse a String into an Enum in C#?

Dalam C#, rentetan dihuraikan sebagai disebutkan

Apabila memproses borang dan penghitungan HTML dalam C#, nilai rentetan mungkin perlu ditukar kepada nilai penghitungan yang sepadan. Berikut adalah beberapa kaedah untuk melaksanakan tugas ini:

kaedah parsing umum (.NET Core dan .NET Framework 4.0)

dalam .NET Core dan .NET Framework 4.0 dan versi yang lebih tinggi, anda boleh menggunakan kaedah parsing umum:

<code class="language-csharp">bool statusSuccess = Enum.TryParse("Active", out StatusEnum myStatus);</code>
kaedah analisis mudah

Jika anda tidak dapat mengakses versi terkini .NET, anda boleh membuat rutin analisis mudah:

<code class="language-csharp">public static T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, true);
}

StatusEnum myStatus = EnumUtil.ParseEnum<StatusEnum>("Active");
// 或
StatusEnum myStatus = "Active".ToEnum<StatusEnum>();</code>
kaedah dengan nilai lalai

Jika rentetan tidak boleh menjadi nilai penghitungan yang berkesan, anda boleh memberikan nilai lalai dalam kaedah parsing:

<code class="language-csharp">public static T ToEnum<T>(this string value, T defaultValue)
{
    if (value == null || value == "")
        return defaultValue;

    T result;
    return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}

StatusEnum myStatus = "Active".ToEnum(StatusEnum.None);</code>
Ingat bahawa apabila mengubahsuai kelas teras seperti kelas rentetan, gunakan kaedah pengembangan dengan teliti kerana ia akan mempengaruhi semua contoh kelas ini, tanpa mengira konteksnya.

Atas ialah kandungan terperinci Bagaimana cara menghuraikan rentetan ke dalam enum di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn