gpt4 book ai didi

c# - C# 和 VB 中的锯齿状数组 CLS 合规性不同?

转载 作者:行者123 更新时间:2023-11-30 16:16:20 25 4
gpt4 key购买 nike

根据公共(public)语言规范,具有数组参数的方法的重载解析基于它们是数组这一事实及其元素类型。所以下面的代码应该是兼容的(确实如此),因为 Double()() 是一个数组数组,而 Double() 是一个 double 组。

<CLSCompliant(True)> _
Public Class VBTest

Public Sub ArrayTest(value As Double())
End Sub

Public Sub ArrayTest(value As Double()())
End Sub

End Class

但是,在 C# 中使用相同的代码,我在第二个 ArrayTest 方法上收到警告:

“重载方法‘CSTest.ArrayTest(double[][])’仅在未命名的数组类型上有所不同,不符合 CLS”

[CLSCompliant(true)]
public class CSTest
{
public void ArrayTest(double[] value){}
public void ArrayTest(double[][] value){}
}

如果我正确理解了这条 CLS 规则,那么 C# 处理交错数组的方式是否与 VB 不同?或者这是 C# 编译器中的错误?在这两种情况下,我都运行针对 .NET Framework 4.0 的 VS2010。

最佳答案

这是 C# 编译器中记录的错误。在 MSDN article 中提到关于符合 CLS 的代码:

Note

Jagged arrays — that is, arrays of arrays — are CLS-compliant. In the .NET Framework version 1.0, the C# compiler mistakenly reports that they are not.

我检查了它的 4.5,仍然没有修复。

关于c# - C# 和 VB 中的锯齿状数组 CLS 合规性不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523460/

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