您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如果Int32只是int的别名,那么Int32类如何使用int?

如果Int32只是int的别名,那么Int32类如何使用int?

这在C#中不是非法的吗?如果“ int”仅是“ Int32”的别名,则它将无法编译,并显示错误CS0523。编译器中有魔术吗?

是; 该错误在编译器中被有意消除。如果所讨论的类型是内置类型,则将完全跳过循环检查器。

通常,这种事情是非法的:

struct S { S s; int i; }

在那种情况下,S的大小是不确定的,因为无论S的大小是多少,它都必须等于自身加上int的大小。没有这样的大小。

struct S { S s; }

在那种情况下,我们没有信息可用来推断S的大小。

struct Int32 { Int32 i; }

但是在这种情况下,编译器会提前知道system.int32四个字节,因为它是一个非常特殊的类型。

顺便说一句,关于C#编译器(就此而言,还是CLR)如何确定一组结构类型何时是循环的细节非常有趣。我将在某个时候尝试撰写有关此内容博客文章

其他 2022/1/1 18:13:40 有632人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶