作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C# 中有以下代码片段
List<int> list = new List<int>() { 1, 23, 5, 3, 423, 3 };
var query = list.Cast<double>().Select(d => d);
try
{
foreach (var item in query)
{
Console.WriteLine(item);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
它编译完美,但是当我执行它时出现异常。
最佳答案
因为您是从 int 到 double 的类型转换,所以这不是转换,而是类型转换,这与在一般情况下将 int 转换为 double 时有所不同。
Cast<T>
扩展方法使用 IL 指令 unbox.any
当 C# 像这样转换时
var x = (double)42;
实际结果是IL指令
conv.r8
从根本上将一个类型作为不同类型拆箱是错误的,这就是你得到异常的原因。
关于c# - 为什么我会收到 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5309436/
我是一名优秀的程序员,十分优秀!