zoukankan      html  css  js  c++  java
  • 如何通过泛型返回自定义枚举值

    我们编写程序很多时候会碰到将枚举值保存到数据库中的情况,这种保存很简单,直接使用枚举值的ToString()就可以了,但是我们保存到数据库中并不只是为了保存,还要进行读取,那么我们读取的时候怎么将字符串转换成枚举值呢?这就需要用到下面的一个技巧:Enum.Parse来实现。代码如下:
     1     public partial class Form1 : Form
     2     {
     3         public Form1()
     4         {
     5             InitializeComponent();
     6         }
     7 
     8         private void button1_Click(object sender, EventArgs e)
     9         {
    10             string s = "ss";
    11             dd p = (dd)Enum.Parse(typeof(dd),s);//这里将字符串s转换为枚举p了,原创:yangyang8848.cnblog.com
    13         }
    14     }
    15 
    16     public enum dd
    17     {
    18         mm,ss
    19     }

    但是这里又有了一个问题,那就是每次我从数据库中读取一个枚举都要进行一次这种操作,那样太麻烦了,能不能把这种操作进行一个简单的包装呢,做成一个只要用户指定就可以返回出固定的枚举,这里就要用到泛型了。代码如下:
        public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    private void button1_Click(object sender, EventArgs e)
            {//原创:yangyang8848.cnblogs.com
                
    string s = "ss";
                dd p 
    = (dd)Enum.Parse(typeof(dd),s);
            }

            
    private void button2_Click(object sender, EventArgs e)
            {
                dd p 
    = FF<dd>.GetEnum("ss");
                ll t 
    = FF<ll>.GetEnum("oo");
               
            }
        }
        
    public class FF<T>
        {
            
    public static T GetEnum(string ss)
            {
                
    return (T)Enum.Parse(typeof(T), ss);
            }
        }
        
    public enum dd
        {
            mm,ss
        }
        
    public enum ll
        {
            kk,oo
        }

    看到上边代码没有??很简单吧!!只是加了一个泛型类,那么我们就可以把字符串转换为枚举更加直观的给他人调用。
  • 相关阅读:
    javascript中的this指向
    面向对象和面向过程、对象、类、实例
    javascript
    实例011:养兔子
    day13匿名函数
    实例010:给人看的时间
    python基础学习day12 生成器与推导式
    实例009:暂停一秒输出
    python基础学习day11函数的进阶
    第一部分:趣味算法入门;第八题:冒泡排序(并与选择排序对比)
  • 原文地址:https://www.cnblogs.com/yangyang8848/p/1212865.html
Copyright © 2011-2022 走看看