悟道人生

渴望闲云野鹤的生活,面对自然,鸟鸣虫唱,星辰为伴,没有拘束,没有苦恼,有的只是神仙般的生活

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::
  68 随笔 :: 5 文章 :: 80 评论 :: 15万 阅读

  有时候我们在编写程序的时候会突然使用一些比较少见的用法,比如今天在编写程序过程中,遇到这样一个问题。这个问题我以前没有遇到过,刚开始不知道怎么处理比较好。在搜寻的过程中发现其实.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。

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

1
2
3
4
5
6
7
8
9
10
11
public static T FromType<T,TK>(TK text)
      {
          try
          {
              return (T) Convert.ChangeType(text, typeof (T), CultureInfo.InvariantCulture);
          }
          catch
          {
              return default(T);
          }
      }

    

posted on   凌风有约  阅读(6408)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示