当前位置: 首页 > 编程语言 > C#

C#学习教程:.net中命名空间可以拥有的类数量有限制吗?分享

时间:2023-04-10 12:16:32 C#

.net中命名空间可以拥有的类的数量是否有限制?.net中命名空间可以拥有的类的数量是否有限制?另外,命名空间中推荐的类数量是多少?我试了一下:我刚刚构建了一个包含1,000,000种类型的程序集,没有任何问题。但是在5,000,000时,C#编译器内存不足:-)。没有指定“每个命名空间”的最大类数——命名空间实际上只是类型全名的一部分,而不是CLR中的逻辑实体建议的数量是有意义的:使用命名空间将逻辑上相关的类组合在一起。我敢肯定,如果你有足够的类型,你可以运行编译器或在运行时耗尽内存,但这是一个物理限制而不是规范——它们是否在同一个命名空间中可能无关紧要。请注意,正如Steven指出的那样,您还可以在多个程序集中使用相同的名称空间。我敢肯定这会被埋没,但是您可以在dll中拥有非常有限数量的类。该消息来源说,如果使用元数据标记来标识元数据表中的类,并且元数据标记是一个四字节数字,则意味着程序集可以包含的类数少于3个字节的最大数量(第一个bytes是元数据表类型的连接)。3个字节中最大的数是2^24-1或16777215。因此,.NET程序集可以包含的最大类(和类成员)是16777215。据我所知,没有这样的限制,就像那里您可以拥有的课程数量没有限制。命名空间只是类全名的一部分。没有限制。可能类型的数量取决于问题域。如果某个“文件夹”的类型不止一种,你有任何自由。在我的应用程序中,我有一个用于特定协议中的消息的名称空间,并且我有大约200种不同的消息类型。可能有也可能没有物理限制,但在达到它之前应该达到逻辑限制。至于“应该有多少”,与.Net中的大多数答案一样,答案是“视情况而定”。对此没有明确的答案——基本上,你想将你的解决方案从逻辑上划分为与功能或目的相关的项目——无论这在你的特定情况和你的特定品味中是否有意义。您始终可以在任何给定的命名空间中创建包含更多类的新程序集。没有编译器实际上可以强制执行全局限制。好吧,类名必须符合字符串。只有几个有效字符,所以将此作为一个非常粗略的猜测,给出850000,因为我无法获得UCS中不同类中的字符数,这将-在具有字符长度名称的名称空间中-给出限制850000×10737418213!x10737418213!但是,VB.NET只能使用1023个字符的大小,因此限制为850000x1021!x1021!而C#只能处理511个字符的长名字,所以85000×509!x509!我没有.NET4.0框架,所以需要解决这些方程式的大数学太讨人喜欢了,不能马上解决;)85000可能没问题,但表意字符通常在Lo类中,这是允许的类名,它们填充了大部分分配的代码点。无论如何,无论实际值是多少,未来的Unicode版本都会增加。无论如何,在此之前,所有技术甚至物理限制的方式都会受到影响,但在此之前我们会达到有目的的限制。编译器没有名称空间,它存在于人类中。编译器也可以在没有名称空间的情况下处理(实际上,也许更好),编码器只是保证名称永远不会被重用。人类存在具有合理大小(可学习大小)的类型组来处理的命名空间。以上是C#学习教程:.net中一个命名空间可以拥有的类数量有限制吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: