快速学习c# 枚举

2020-06-10 11:59:50王振洲

三、枚举的使用建议

  当参数、返回值、变量等类型可以使枚举,尽量使用枚举(要注意考虑分类的稳定性)

  大多数情况下都可以使用int类型枚举,下列情况除外。

  枚举可能被大量频繁的使用,这时为了节约空间可以使用小于int类型的枚举。

  标志枚举,且标志多于32个。

  下面写一个:枚举绑定MVC3下拉列表的示例:

  控制器代码:

namespace MvcStart.Controllers
{
 public class HomeController : Controller
 {
  public ActionResult GetSexList()
  {
   Dictionary<string, int> Sexlist = new Dictionary<string, int>();
   string[] keys = Enum.GetNames(typeof(sex));
   Array values = Enum.GetValues(typeof(sex));

   for (int i = 0; i < keys.Length; i++)
   {
    Sexlist.Add(keys[i], (int)values.GetValue(i));
   }

   return View(Sexlist);
  }
 }

 public enum sex
 { 
  male = 1,
  female = 2,
  other = 3
 }
}

视图代码:

@model Dictionary<string, int>
<select>
 @foreach(var item in @Model)
 {
  <option value="@item.Value">@item.Key</option>
 }
</select>

生成的HTML代码:

<select>
  <option value="1">male</option>
  <option value="2">female</option>
  <option value="3">other</option>
</select>

再来一个例子,获取枚举描述

public static class GetDescription
 {
  /// <summary>
  /// 获取描述信息
  /// </summary>
  /// <param name="en"></param>
  /// <returns></returns>
  public static string description(this Enum en)
  {
   Type type = en.GetType();
   MemberInfo[] memInfo = type.GetMember(en.ToString());
   if (memInfo != null && memInfo.Length > 0)
   {
    object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
    if (attrs != null && attrs.Length > 0)
     return ((DescriptionAttribute)attrs[0]).Description;
   }
   return en.ToString();
  }
 }

 public enum Sex
 {
  [Description("男")]
  man = 1,
  [Description("女")]
  woman = 2,
  [Description("其他")]
  other = 3
 }

以上就是快速学习c# 枚举的详细内容,更多关于c# 枚举的资料请关注易采站长站其它相关文章!