• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > .Net判断一个对象是否为数值类型实例

.Net判断一个对象是否为数值类型实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了.net面向对象,vb.net面向对象,ado.net的核心对象,.net面向对象编程,ado.net五大对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了.Net判断一个对象是否为数值类型的方法,分享给大家供大家参考。具体实现方法如下:

.Net判断一个对象是否为数值类型乍一听是个很简单的事,但突然搞起来还真有点无从下手的感觉。

首先当然是通过GetType()方法反射获取其类型信息,然后对其进行分析,但是类型信息Type中并没有简单地给出这么一个属性进行判断。

老外给出的方法是:

{
        if (dataType == null)
            throw new ArgumentNullException("dataType");

        return (dataType == typeof(int)
                || dataType == typeof(double)
                || dataType == typeof(long)
                || dataType == typeof(short)
                || dataType == typeof(float)
                || dataType == typeof(Int16)
                || dataType == typeof(Int32)
                || dataType == typeof(Int64)
                || dataType == typeof(uint)
                || dataType == typeof(UInt16)
                || dataType == typeof(UInt32)
                || dataType == typeof(UInt64)
                || dataType == typeof(sbyte)
                || dataType == typeof(Single)
               );
}</div>

他是想穷举比对所有已知数值类型。。。。这么做应该是可以,就是性能差点并且不雅吧。

而且~他好像还忘了Decimal。。。

进一步的研究了一下这些数值类型,它们貌似都是结构而非类,而且都有共同的接口:

IFormattable, IComparable, IConvertible
其中IFormattable接口是数值类型有别于其它几个基础类型的接口。

这样就非常好办了,代码如下:

{
        return !o.IsClass && !o.IsInterface && o.GetInterfaces().Any(q => q == typeof(IFormattable));
}</div>
另外除了基本类型之外还有可空类型Nullable<T>,就是常用的例如double?这种,对于泛型的类型的匹配我不知该怎么做才好,赶时间就没深究,用了个偷懒的方法实现了:

{
        if (!o.Name.StartsWith("Nullable")) return false;
        return o.GetGenericArguments()[0].IsNumericType();
}</div>
看吧,只是判断一下类型名称是不是以“Nullable”开始,如果是的话再对其第一个泛型参数类型进行上面的判断,这样肯定不是100%靠谱的,感兴趣的朋友可以进一步完善一下这个方法。

希望本文所述对大家的.net程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .net面向对象之多线程(Multithreading)及 多线程高级应用
  • .Net判断一个对象是否为数值类型实例

相关文章

  • 2017-05-11ASP.NET MVC 3仿Server.Transfer效果的实现方法
  • 2017-05-11DropDownList获取的SelectIndex一直为0的问题
  • 2017-05-11Asp.net MVC中获取控制器的名称的方法
  • 2017-05-11浅谈ASP.NET的include的使用方法
  • 2017-05-11ASP.NET调用WebService服务的方法详解
  • 2017-05-11ASP.Net全局变量的设置和读取方法
  • 2017-05-11C# .Net动态调用webService实现思路及代码
  • 2017-05-11Asp.net后台把脚本样式输出到head标签中节省代码冗余
  • 2017-05-11asp.net页面master页面与ascx用户控件传值的问题
  • 2017-05-11.net中的session与cookies区别及使用方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net快速连接access
    • ASP.NET 定时器回调方法的重入
    • asp.net 自制的单选、多选列表实现代码
    • asp.net(c#)中取得文件物理路径
    • asp.net 细说文件读写操作(读写锁)
    • asp.net AjaxControlToolKit--TabContainer控件的介绍
    • 一个比较通用的分页控件,完整的设计时支持和比较流行的分页模式(提供源码下载)
    • asp.net(C#)函数对象参数传递的问题
    • 浅谈ASP.NET Core 2.0 布局页面(译)
    • asp.net+js实现批量编码与解码的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有