C# 泛型与其他类型的相互转换

本文深入探讨了泛型类的设计与实现,通过实例展示了如何使用泛型类进行不同类型的运算,包括整型、字符串、浮点数和布尔型的相加或连接,并详细解释了类型转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//====================== 泛型类及类型转换 ===========================

泛型类代码


    public class MyTemplate<T>    //设计一个泛型类
    {
        private T mydata;
        
        public MyTemplate()
        {
            
        }
        
        public void Append(T s)    //内容相连或者相加
        {
            if(s is int)    //整形相加
            {
                int sum=Convert.ToInt32(s)+Convert.ToInt32(mydata);//泛型转整形
                mydata=(T)Convert.ChangeType(sum,typeof(T));    //整形转泛型            
            }
            else if(s is string)    //字符串相连
            {
                string sum=Convert.ToString(s)+Convert.ToString(mydata);    //泛型转string
                mydata=(T)Convert.ChangeType(sum,typeof(T));    //string转泛型
            }
            else if(s is double)    //浮点数相加
            {
                double sum=Convert.ToDouble(s)+Convert.ToDouble(mydata);    //泛型转浮点型
                mydata=(T)Convert.ChangeType(sum,typeof(T));    //浮点型转泛型
            }
            else if(s is bool)    //BOOL型求或
            {
                bool sum=Convert.ToBoolean(s) | Convert.ToBoolean(mydata);    //泛型转BOOL型
                mydata=(T)Convert.ChangeType(sum,typeof(T));    //BOOL型转泛型
            }
            
        }        
        
        public T GetValue()    //取当前值
        {
            return mydata;
        }        
        

    }


//使用代码:

    MyTemplate<string> note=new MyTemplate<string>();
            note.Append("a");
            note.Append("b");
            string iresult=string.Format("This string Data is:{0}",note.GetValue());
            lbLog.Items.Add(iresult);    //显示到窗口
            
            MyTemplate<int> num=new MyTemplate<int>();
            num.Append(2);
            num.Append(3);
            num.Append(4);
            iresult=string.Format("This int Data is:{0}",num.GetValue());
            lbLog.Items.Add(iresult);//显示到窗口
            
            MyTemplate<double> dnum=new MyTemplate<double>();
            dnum.Append(2.12);
            dnum.Append(3.23);
            dnum.Append(4.34);
            iresult=string.Format("This double Data is:{0}",dnum.GetValue());
            lbLog.Items.Add(iresult);//显示到窗口
            
            MyTemplate<bool> bnum=new MyTemplate<bool>();
            bnum.Append(true);
            bnum.Append(false);
            bnum.Append(false);
            iresult=string.Format("This bool Data is:{0}",bnum.GetValue());
            lbLog.Items.Add(iresult);//显示到窗口


显示结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值