如何确定是否需要打包类型?

2 .net reflection boxing value-type

MSDN文档说只有值类型需要装箱,但这不适用于字符串,字符串是一种值类型,不需要装箱.我最初尝试使用Type.IsValueType,但由于这对于字符串返回true,我无法使用它来确定是否真的需要将类型装箱.您还有其他方法可以了解吗?字符串是唯一的例外吗?

更新:我在我的代码中犯了一个错误,我引用了一个int,我认为它是一个字符串.字符串实际上是一个值类型,感谢指出它们!

Jar*_*Par 8

你的前提是不正确的.String实际上是一种引用类型,在许多场景中恰好就像一个值类型.Type.IsValueType是确定某个值是否需要加框的最可靠方法.

如果你使用可以为空的值,我会小心的.