C# CLS 是否不包括传递 ulong 参数?

Does C# CLS doesn't cover passing ulong parameter?

以下内容来自一本关于 C# 的书。

To illustrate, the following Add() method is not CLS-compliant, as the parameters and return values make use of unsigned data (which is not a requirement of the CLS):

class Calc
{
// Exposed unsigned data is not CLS compliant!
public ulong Add(ulong x, ulong y)
{ return x + y;}
}

这是什么意思?函数怎么能不取 ulong 值呢? C# 的 CLS(公共语言规范)中没有涵盖这一点吗?

我确实尝试了这个示例,它构建并运行良好。我认为传递 ulong 参数是非常基本的。这段拉力赛是什么意思?

这意味着某些其他风格的 .NET 可能无法使用该方法,因为它不支持无符号数据类型。 .NET 不仅是 C#;有许多语法可以编译为与 C# 相同的底层事物 - .NET 的吸引力之一是,如果有人为您最喜欢的编程语法(例如,COBOL)编写了一个生成 .NET IL 的编译器,那么您可以编写您的 COBOL ,您可以使用用 C# 编写的库,您甚至可以在同一个解决方案中并排放置它们(试试看;将 vb.net 和一个 c# 项目放在一个解决方案中,从另一个引用一个并调试它 -调试器将愉快地在两者之间来回切换)

如今 CLS 合规性规则是否过于严格是一些争论的主题,但如果您正在写东西并希望确保所有风格都支持您所写的内容,您可以将程序集标记为 CLS 合规性并且遵守规则