回到基础...
对于引用类型,可以这样做:
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/