gpt4 book ai didi

c# - 为什么我会收到 InvalidCastException?

转载 作者:行者123 更新时间:2023-11-30 13:12:31 24 4
gpt4 key购买 nike

我在 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 

从根本上将一个类型作为不同类型拆箱是错误的,这就是你得到异常的原因。

This问题有相同的答案,也链接到 blog post埃里克·利珀特 (Eric Lippert)。

关于c# - 为什么我会收到 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5309436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com