当前位置:编程学习 > C#/ASP.NET >>

C#两种任意类型转换支持(示例:String convert to Type)

有时候我们在编写程序的时候会突然使用一些比较少见的用法,比如今天在编写程序过程中,遇到这样一个问题。这个问题我以前没有遇到过,刚开始不知道怎么处理比较好。在搜寻的过程中发现其实.net类库已经提供了现成的处理方法。因此在此记录一下,仅供以后学习参考,也希望能够有同样需要的朋友一个参照。下面来看看这个问题吧!

  问题描述:有一个泛型方法如public List<T> getList<T>(),它返回的是一个List集合,List集合中元素的类型由调用泛型方法时指定。在getList方法具体实现中,可能需要将某种类型的数据转换成T类型,然后添加到List集合中。

  举例说明:调用方法getList<int>(),数据本身是string类型,这样则需要将string类型数据类型转换成int类型,才能添加到List<int>集合中。

  解决方法:

    我们在命名空间System下,找到了Convert类下有一个ChangeType方法,它有三种重载方式,如下图所示:

    \

    关于这个方法的详细介绍请参照MSDN:http://technet.microsoft.com/zh-cn/library/system.convert.changetype(en-us).aspx

    有了这个方法,我们来看一下如何解决这个问题了。 

  1. 获取泛型类型T的System.Type对象,使用typeof(T)。
  2. 使用Convert.ChangeType方法将String转换成等效于T对象的object。
  3. 将得到的object对象转换成T。

  可以将上述过程提取成公有方法,看看下面代码。

 
01   public static T FromType<T,TK>(TK text)
02         {
03             try
04             {
05                 return (T) Convert.ChangeType(text, typeof (T), CultureInfo.InvariantCulture);
06             }
07             catch
08             {
09                 return default(T);
10             }
11         }
    
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,