如何判断类型是否需要装箱?

发布于 2024-08-03 20:20:09 字数 215 浏览 8 评论 0原文

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

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

MSDN docs say that only value types need boxing, but this does not apply to string, which is a value type and does not need to be boxed. I initially tried Type.IsValueType, but since that returns true for string, I can't use it to determine whether a type really needs to be boxed. Are there any other methods you are aware of? Is string the only exception?

UPDATE: I made a mistake in my code where I referenced an int and I thought it was a string. String is in fact a value type, thanks for pointing it out guys!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

热情消退 2024-08-10 20:20:09

你的前提是不正确的。字符串实际上是一种引用类型,在许多情况下它恰好充当值类型。 Type.IsValueType 是确定值是否需要装箱的最可靠方法。

不过,如果您使用可为空的值,我会小心。

Your premise is incorrect. String is actually a reference type which just happens to act like a value type in many scenarios. Type.IsValueType is the most reliable way of determining if a value would need to be boxed or not.

I'd be careful if you work with nullable values though.

腻橙味 2024-08-10 20:20:09

您正在编写原始 IL 吗?这是你必须关心拳击的唯一情况。

Are you writing raw IL? That's the only case in which you'll have to concern yourself with boxing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文