MSDN文档说只有值类型需要装箱,但这不适用于字符串,这是一种值类型,不需要装箱。我最初尝试使用Type.IsValueType,但由于这对于字符串返回true,我无法使用它来确定是否真的需要将类型装箱。您还有其他方法可以了解吗?字符串是唯一的例外吗?
更新:我在我的代码中犯了一个错误,我引用了一个int,我认为它是一个字符串。字符串实际上是一个值类型,感谢指出它们!
答案 0 :(得分:8)
你的前提是不正确的。 String实际上是一种引用类型,在许多场景中恰好就像一个值类型。 Type.IsValueType是确定某个值是否需要加框的最可靠方法。
如果你使用可以为空的值,我会小心。
答案 1 :(得分:1)
你在写原始IL吗?这是你唯一需要关注拳击的案例。