gpt4 book ai didi

c# - CLS 允许类中代码的私有(private)部分不符合 CLS。这怎么可能?

转载 作者:太空狗 更新时间:2023-10-29 21:11:06 25 4
gpt4 key购买 nike

CLS 允许类中代码的私有(private)部分不符合 CLS。这怎么可能,因为最终代码需要转换为 IL?

最佳答案

CLS 代表通用语言规范。为简化起见,它基本上是所有 .NET 语言必须了解的最少类型和标识符。例如,Int32 符合 CLS:任何 .NET 语言都必须能够处理它。 UInt32 不是。由于您的代码是私有(private)的,它不会被其他语言的其他程序集访问,因此它是否符合 CLS 并不重要。

参见 this MSDN page有关 CLS 合规性的更多信息。

编辑:我认为您误解了什么是 CLS 合规性。这与代码是否可以编译成 IL 无关。 UInt32 可以在 IL 中使用。名为“©”的标识符也是如此。 CLS 合规性只是语言互操作性的最小契约。 CLR 支持的内容比 CLS 合规性的限制范围更广。

Edit2: 是的,你是对的。 .NET 语言需要支持 Int32,而不是 UInt32,即使它直接映射到 IL。请参阅指针,它们在 IL 和 C# 中受支持,但不符合 CLS。 VB.NET 没有实现对它们的支持,但仍然符合 CLS。

关于c# - CLS 允许类中代码的私有(private)部分不符合 CLS。这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com