CLSCompliant提示不适用于C#代码



我的目标框架是.NET5,应用程序类型是Console。我正在使用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相关警告吗?

CLS一致性是库的一个契约,意味着它可以从任何语言中使用。例如,有些语言不支持无符号整数或不区分大小写的

这意味着您可以以任何方式编写内部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);
}
}

你可以在文档中阅读更多

相关内容

  • 没有找到相关文章

最新更新