gpt4 book ai didi

c# - CLR 如何知道装箱对象的类型?

转载 作者:可可西里 更新时间:2023-11-01 07:51:25 25 4
gpt4 key购买 nike

当值类型被装箱时,它被放置在一个untyped 引用对象中。那么是什么导致了这里的 invalid cast 异常呢?

long l = 1;
object obj = (object)l;
double d = (double)obj;

最佳答案

不,它没有被放置在一个无类型的对象中。对于每种值类型,在 CLR 中都有一个装箱引用类型。所以你会有东西,比如:

public class BoxedInt32 // Not the actual name
{
private readonly int value;
public BoxedInt32(int value)
{
this.value = value;
}
}

虽然在 C++/CLI 中,但在 C# 中不能直接访问该盒装类型。显然知道原始类型。因此,在 C# 中,变量的编译时类型必须是 object ,但这并不意味着这是对象的实际类型。

参见 ECMA CLI specCLR via C#了解更多详情。

关于c# - CLR 如何知道装箱对象的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651754/

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