当前位置:  开发笔记 > 编程语言 > 正文

检查C#中的任何int类型?

如何解决《检查C#中的任何int类型?》经验,为你挑选了1个好方法。

我有一个函数,除其他外,它接受一个对象和一个类型,并将该对象转换为该类型.但是,输入对象通常是double,并且类型有一些int(uint,long等)的变体.如果圆数作为double传递(如4.0),我想要这个工作,但如果在(4.3)中传入小数则抛出异常.有没有更优雅的方法来检查Type是否是某种int?

if (inObject is double && (targetType == typeof (int)
                         || targetType == typeof (uint)
                         || targetType == typeof (long)
                         || targetType == typeof (ulong)
                         || targetType == typeof (short)
                         || targetType == typeof (ushort)))
{
    double input = (double) inObject;
    if (Math.Truncate(input) != input)
        throw new ArgumentException("Input was not an integer.");
}

谢谢.



1> Amy B..:

这似乎符合你的要求.我只测试了它的双打,浮子和整数.

    public int GetInt(IConvertible x)
    {
        int y = Convert.ToInt32(x);
        if (Convert.ToDouble(x) != Convert.ToDouble(y))
            throw new ArgumentException("Input was not an integer");
        return y;
    }

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有