C# 如何检查装箱值的类型?

C# 如何检查装箱值的类型?,c#,C#,I框值类型: Object boxed = new Object(); boxed = "bla bla bla"; // boxing string boxed = 10; //boxing int 有时我需要取消装箱,但在值取消装箱之前,我需要在装箱之前检查类型 如何检查装箱的类型?您只需调用GetType()或is: if (boxed is int i) { // use i } 或C#7之前: 字符串已经是引用类型,因此没有装箱int可以装箱,但返回的基础类型仍然是未装箱的

I框值类型:

Object boxed = new Object();
boxed = "bla bla bla"; // boxing string
boxed = 10; //boxing int
有时我需要取消装箱,但在值取消装箱之前,我需要在装箱之前检查类型


如何检查装箱的类型?

您只需调用
GetType()
is

if (boxed is int i)
{
    // use i
}
或C#7之前:


字符串已经是引用类型,因此没有装箱
int
可以装箱,但返回的基础类型仍然是未装箱的类型。

GetType()
typeof
?-
if(boxed是FooType)((FooType)boxed).SomeMethod()
.GetType()
无论什么东西是否被装箱都有效。但是你开始使用的术语是错误的——你不在乎它是否被装箱,你想知道作为泛型
对象存储的对象的类型。值得注意的是,由于字符串是引用类型,所以不能对其进行框选。这个问题有太多明显的答案。我们不能告诉你的是,为什么你需要知道,这个片段特别没有帮助。使用
is
操作符是最简单的方法。答案中使用的代码示例是C#7,虽然可能是正确的,但没有指定这样的版本,并且不是C#语言的主流版本,这个答案可能会让一些新手感到困惑。我建议添加这些信息。哦,是的。用户知道拳击是什么,所以不是新手。将更新。
if (boxed is int)
{
    int i = (int)boxed;
    // use i
}