首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >typeof()检查数值

typeof()检查数值
EN

Stack Overflow用户
提问于 2012-01-12 21:37:21
回答 2查看 12.3K关注 0票数 9

检查typeof()是否在数学上可用(数值)的最简单方法是什么?

我是否需要使用TryParse method或通过以下方式进行检查:

代码语言:javascript
复制
if (!(DC.DataType == typeof(int) || DC.DataType == typeof(double) || DC.DataType == typeof(long) || DC.DataType == typeof(short) || DC.DataType == typeof(float)))
     {
           MessageBox.Show("Non decimal data cant be calculated");
           return;
     }

如果有更简单的方法来实现这一点,你可以自由地建议

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-12 21:42:41

不幸的是,没有什么可做的。但是从C# 3开始,你可以做一些更花哨的事情:

代码语言:javascript
复制
public static class NumericTypeExtension
{
    public static bool IsNumeric(this Type dataType)
    {
        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)
               );
    }
}

所以你的原始代码可以写成这样:

代码语言:javascript
复制
if (!DC.DataType.IsNumeric())
{
      MessageBox.Show("Non decimal data cant be calculated");
      return;
}
票数 10
EN

Stack Overflow用户

发布于 2012-01-12 21:50:48

您可以检查数值类型实现的接口:

代码语言:javascript
复制
if (data is IConvertible) {
  double value = ((IConvertible)data).ToDouble();
  // do calculations
}

if (data is IComparable) {
  if (((IComparable)data).CompareTo(42) < 0) {
    // less than 42
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8835982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档