.net - 如何检查 .NET 中值类型之间的 "safe"转换?

标签 .net math algebra

回到基础...

对于引用类型,可以这样做:

        SomeType someObject = firstObject as SomeType;
        if (someObject == null)
        {
            // Handle the situation gracefully
        }
        else
        {
            // Do stuff
        }

对于值类型,我的理解是我们有隐式转换(不会丢失数据)、显式转换(如果存在数据丢失风险则需要)、Convert 类(“转换包装器”)我认为)以及特定于类型的转换(例如 double x = Double.Parse("2");),但我还没有找到任何类似于 as 的内容上面的运算符。

所以,我的问题是:框架是否提供了一些方法/操作符/技术来执行以下操作:

        if (!Convert.CanConvert(someValue, someValueType))
        {
            // Beware! Data loss can occur
        }
        else
        {
            // No data loss here
        }

如果没有,任何人都可以建议一种可靠的方法来构建这样的 CanConvert 方法吗?

非常感谢!

编辑(1):用户案例/问题如下:给定代码使用者(我的另一个 self ,但这无关紧要)传递的某物,(1)检查>something 是一个数字(很简单),并且 (2) 将 something 放置在它适合的“最小”数字类型中,而不会导致数据丢失。

一些背景:我想做的事情的本质更多的是数学而不是技术:我试图看看是否/如何将现有的数字类型放入 Monoid=> 形式的某种代数层次结构中组=>环=>场(或其简化版本)。在研究这个问题时,不太确定如何,“一件事导致了另一件事”,我发现自己必须处理类型转换......

最佳答案

各种值类型上的 TryParse 方法怎么样?

int x;

if (int.TryParse(someType.ToString(), out x))
    return x;

关于.net - 如何检查 .NET 中值类型之间的 "safe"转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124171/

相关文章:

c# - 当代码块结束时,var 类型会发生什么?

c# - 如何从 WMI 获取方法

asp.net - Javascript 计算和回传

javascript - 如何在 Mapbox.js 中的两个坐标之间的直线上移动标记

sql-server - TSQL代数-求解x((a)x <b)

c# - 有没有办法轻松屏蔽输入框对象

math - 向量矩阵乘法顺序会影响性能吗?

java - 某些测试中的错误输出

algorithm - 从一组给定的数字中总计为给定数字的所有可能的操作组合

c# - GridView 到 Excel