当前位置:首页 > C#编程 > C#/.net框架 > 正文内容

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

秋天2年前 (2022-05-09)C#/.net框架646

 

//====================== 泛型类及类型转换 ===========================泛型类代码    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);//显示到窗口


#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。

扫描二维码推送至手机访问。

版权声明:本文由7点博客发布,如需转载请注明出处。

本文链接:http://6dot.cn/?id=142

标签: .NET.NET框架
分享给朋友:

“C# 泛型与其他类型的相互转换” 的相关文章

C#字符串与享元(Flyweight)模式

C#字符串与享元(Flyweight)模式

注:关注这个话题是因为看到C#的关键字 lock时,其传入引用对象。因为string也是引用对象,所以能否做为lock的参数?对于这个问题,要搞明白C#的字符串的一个特点,它使用类似于享元模式的机制。因此在lock中锁字符串是相当不安全的。下面贴子是对C#字符串与享元模式的深入讨论。写这个文章,主要...

C#中使用RegisterWindowMessage进行进程之间进行通讯

C#中使用RegisterWindowMessage进行进程之间进行通讯

注:大家都知道在window里,进程之间通讯可以用消息通讯。但是有个较冷门的知识就是RegisterWindowMessage。一般的sendmessage和postmessage是需要在窗体程序间进行通讯,你得知道对方窗口的句柄。这个句柄每次启动程序时是系统分配的,每次不一样。有了这个Regist...

谈谈ObservableCollection观察者集合

谈谈ObservableCollection观察者集合

注:事件很常见,但有重复的代码量。如果你想简化一下事件的编程,而且是整个程序只使用一个像事件池一样的东西,可以尝试使用下文讲的ObservableCollection观察者集合来做到。ObservableCollection<T>类表示一个动态数据集合,在添加项,移除项或刷新整个列表时,...

C#:多进程开发,控制进程数量

C#:多进程开发,控制进程数量

正在c#程序优化时,如果多线程效果不佳的情况下,也会使用多进程的方案,如下:C#System.Threading.Tasks.Task task=System.Threading.Tasks.Task.Factory.StartNew(     &...

C# 当前不会命中断点 还没有为该文档加载任何符号

C# 当前不会命中断点 还没有为该文档加载任何符号

这个问题网上的经验大概如下:1。 清空方案,重新编译2。 删除项目bin目录下的东西,重新编译3。 解决相互引用的问题。4。 确保不是run的release5。把项目编译改为x866。 好像没发现其它的了。。。这些解决不了我们手上的项目的问题。我们的工程有几十个项目。我长话短说,解决方法是:引导项目...

c#——表达式树在LINQ动态查询

c#——表达式树在LINQ动态查询

一般如果逻辑比较简单,只是存在有的情况多一个查询条件,有的情况不需要添加该查询条件简单方式这样操作就可以了C#public IQueryable<FileImport> DynamicChainedSyntax (IQueryable<FileImport&g...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。