0

我的目标框架是 .NET 5,应用程序类型是控制台。我使用 Visual Studio 2019 版本 16.10.1 作为 IDE。如果我在 C# 代码中使用 CLSCompliant 提示并故意违反 CLS 合规性,我想看看是否确实收到警告。由于未在 CLS 中指定,因此通过引用 UInt32 类型的变量来实现违规。但似乎我没有收到任何错误或警告。

这是代码: -

using System;

[assembly: CLSCompliant(true)]
namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            UInt32 x = 12;
            Console.WriteLine(Convert.ToString(x));
        }
    }
}

我是否必须为此更改一些 IDE 设置才能显示与 CLS 相关的警告?

4

1 回答 1

1

CLS-complience 是您的库的合同,这意味着它可以从任何语言中使用。例如,某些语言不支持无符号整数或不区分大小写

这意味着您可以按照自己喜欢的方式编写内部 API 或实现,但必须遵循公共 API 的规则

[CLSCompliant(true)]
public class MyClass
{
    public void Yes(int value) {}
    public void No(uint value) {} // warning: uint is not compliant
    public void no(int value) {} // warning: No & no is same word
    public void Yes2(int value)
    {
        Span<byte> bytes = stackalloc byte[10]; // we can do weird things inside, but as long public API is compliant, it won't cause warnings
        Helper.ProcessBytes(bytes);
    }
}

您可以在文档中阅读更多内容

于 2021-07-04T05:16:10.847 回答