NET问答: 是否有通用的方法判断一个 Type 是 Number ?
咨询区
Adi Barda:
请问是否有一种方式可以判断 .NET Type 是一个 number,这里的number不单单是 int ,还有可能是 System.UInt32/UInt16/Double
等等,我真的不想写那种长长的 switch case 来摆平这个问题。
比如下面的代码:
public static bool IsNumericType(this object o)
{ switch (Type.GetTypeCode(o.GetType())){case TypeCode.Byte:case TypeCode.SByte:case TypeCode.UInt16:case TypeCode.UInt32:case TypeCode.UInt64:case TypeCode.Int16:case TypeCode.Int32:case TypeCode.Int64:case TypeCode.Decimal:case TypeCode.Double:case TypeCode.Single:return true;default:return false;}
}
回答区
Jon Skeet:
如果你不想使用 switch,可以用 HashSet 或者 Dictionary 来替代,参考如下代码:
public static class TypeHelper
{private static readonly HashSet<Type> NumericTypes = new HashSet<Type>{typeof(int), typeof(double), typeof(decimal),typeof(long), typeof(short), typeof(sbyte),typeof(byte), typeof(ulong), typeof(ushort), typeof(uint), typeof(float)};public static bool IsNumeric(Type myType){return NumericTypes.Contains(Nullable.GetUnderlyingType(myType) ?? myType);}
}
当 .NET 有新的类型加入时,你也可以非常方便的将其加入到 NumericTypes 中,比如:BigInteger 和 Complex。
Konamiman:
你可以使用 Type.IsPrimitive
并排除掉 Boolean
和 Char
类型,比如下面这样的简单粗暴:
bool IsNumeric(Type type)
{return type.IsPrimitive && type!=typeof(char) && type!=typeof(bool);
}
如果你不认为 IntPtr,UintPtr
是 numeric 类型的话,也可以排除掉。
点评区
这套题还是挺有意思的,Konamiman
大佬提供的方法简洁高效,也并没有使用反射,而是直接调取它的 类型句柄
直接判断,学习了!
NET问答: 是否有通用的方法判断一个 Type 是 Number ?相关推荐
- Java(实验一)身体质量指数(BMI,Body Mass Index)是国际上常用的衡量人体肥胖程度和是否健康的重要标准,它用如下方法判断一个成年人的肥胖程度
一.实验目的: 1.熟悉Java应用程序编写.编译与运行流程. 2.熟悉Java程序基本结构,能够编写最简单的Java程序. 3.掌握一种Java的标准输入输出处理方法. 4.学会编写包含选择与循环结 ...
- 写一个方法判断一个字符串是否对称_判断一个男生是否好色的方法
▾ 我们店只招黑喵哦? ▾ 其实也不是不能理解为什么男的要跑? ▾ 有什么相见恨晚的小知识?? ▾ 见证奇迹?:是不是穿过去了!? ▾ 医学奇迹? ▾ 卧槽流劈!?真的超光速了! ▾ 细节很到位啊几位 ...
- 地图处理方法-判断一个点是否在某个区域内
判断一个点是否在某个区域内(多边形) 背景: 比如滴滴会根据乘客所在的不同区域,给出不同的价格.市区堵一点,那么价格也高点.获取服务范围只规定在某个范围内 原理: 求解从该点向右发出的水平线射线与多边 ...
- 两种方法判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言)...
例如:给定s1 = AABCD和s2 = BCDAA,返回1 给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 第一种: ...
- 产品经理必须知道的一点知识:三种方法判断一个产品该不该做
前言 想明白为什么不要做这个产品 有时候可能比为什么要做这个产品更加重要,因为在错误的道路走的越远,伤害就越大. - 1 -这个产品有无降低交易成本 简单来说就是为了达成一笔交易 买卖双方要付出的时间 ...
- 写一个方法判断一个整数是否为质数_请写一个函数来检查用户提交的数据是否为整数...
请写一个函数来检查用户提交的数据是否为整数(不区分数据类型,可以为二进制.八进制.十进制.十六进制数字) 1.is_integer 是 is_int() 的别名,是一样的 2.is_int/is_in ...
- 用最简单的方法判断一个LONG整形的数A是2^n(2的n次方)
如果一个数是2的n次方,则化成二进制数肯定是 1000...000 的形式,那么 假设这个数是x,则 x-1 肯定是 0111...111 的形式,位数比x少一位 那么 x & (x-1) 则 ...
- python判断ip地址是否合法_python实现判断一个字符串是否是合法IP地址的示例
一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:判断一个字符串是否是合法I ...
- aspx 判断字符串是否为decimal_python实现判断一个字符串是否是合法IP地址
一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:判断一个字符串是否是合法IP地址 ...
最新文章
- @angular/compiler-cli@4.3.6 requires typescript@'=2.1.0 2.4.0' but 2.5.2 was found instead.
- 互联网公司之外,银联等大型企业是如何玩转软件研发的?
- NUC120 SPI 模拟I2S
- 马云最怕的事还是来了,央行对借呗动真格!
- Julia 向 Python 宣战!
- 学python有前途吗-三十岁了,从零开始学python还有前途吗?
- python colorbar刻度_matplotlib画3D图修改X,Y,Z,colorbar的刻度值
- python php mysql_Python 操作 MySQL 的正确姿势
- 传智播客扫地僧C/C++学习 数据类型的本质
- jeecg-boot配置菜单
- 2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码
- 【学渣告诉你】到底神马是傅里叶级数!!!!!!
- 矸石称重自动化系统有什么功能性要求
- Yolov5检测并生成文本及标签文件
- 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码
- 关于Integer和int
- 【入门级】学习卡尔曼滤波
- 三个步骤 让你学会看懂考研数学课本
- 乐思蜀:我们不做网络民工
- 在自启动的.rc文件中添加服务
热门文章
- sql2005数据导入出错问题
- linux 运行apj,pxe+ris-linux实现在DELL R710上网络安装windows2003
- python在运维自动化的前景_现在学运维自动化python和大数据?
- spring security config
- 特殊的求和(函数和循环)
- 使用jquery+css实现瀑布流布局
- 部署也是工程的一部分,也要编程(自动化)
- java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
- linux系统输入指令,详解linux系统输入输出管理和vim的常用功能
- 接收上传的multi-file的文件(四)