C nasıl bir sıralama için bir dize dönüştürebilirim#?
C bir numaralandırma değeri bir dize dönüştürmek için en iyi yolu nedir#?
HTML select etiketi bir numaralandırma değerleri içeren var. Sayfasında yayınlanan, değeri bir dize şeklinde olacak olan) almak ve numaralandırma değeri dönüştürmek istiyorum.
İdeal bir dünyada, böyle bir şey yapabilirim:
StatusEnum MyStatus = StatusEnum.Parse("Active");
ama bu geçerli bir kod değil.
CEVAP
Daha çirkin bir şey
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
Bu basitleştirmek eğilimindedir:
public static T ParseEnum<T>(string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
O zaman yapabileceğim:
StatusEnum MyStatus = EnumUtil.ParseEnum<StatusEnum>("Active");
Bir seçenek yorumlarda önerilen yeterince basit olan bir uzantı eklemek için:
public static T ToEnum<T>(this string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
StatusEnum MyStatus = "Active".ToEnum<StatusEnum>();
Son olarak, dize ayrıştırılamıyor eğer varsayılan numaralandırma kullanmak isteyebilirsiniz:
public static T ToEnum<T>(this string value, T defaultValue)
{
if (string.IsNullOrEmpty(value))
{
return defaultValue;
}
T result;
return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}
Bu çağrıyı yapar:
StatusEnum MyStatus = "Active".ToEnum(StatusEnum.None);
Ancak, ben olsam dikkatli ol ekleyerek bir uzantısı yöntemi gibi bu string
(ad denetimi olmadan) görünür tüm örnekleri string
olsun tuttukları bir numaralama ya da değil (yani 1234.ToString().ToEnum(StatusEnum.None)
olurdu geçerli ama saçma) . Çoğunlukla tüm geliştirme ekibi bu uzantıları ne çok iyi bir anlayışa sahip olmadığı sürece, en iyi ve sadece çok özel bağlamlarda uygulanan ekstra yöntemler ile Microsoft temel sınıfları yığılan kaçının.
Nasıl powershell'de bir dize için bir ...
Nasıl C bir Dize için bir İnt dönüştür...
Nasıl C JSON Dize için bir sözlük dönü...
Nasıl JavaScript ile boş bir dize için...
Bir dize kontrol etmek için nasıl &quo...