gpt4 book ai didi

c# - 当我在 Visual Studio 中生成以二维数组作为参数的构造函数时,这些星号是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:29:44 24 4
gpt4 key购买 nike

在 Visual Studio for Mac 中,如果我这样写:

public class Foo {
public int[,] Property1 { get; }

}

将光标放在那里的空行上,然后按 Command + I 生成一个构造函数:

enter image description here

这发生了:

public class Foo {
public int[,] Property1 { get; }
public Foo(int[*, *] property1)
{
Property1 = property1;
}
}

生成了构造函数,但是参数的类型是int[*, *],编译不通过。

enter image description here

我在想这是 Visual Studio 提示我写一些东西来替换那些星号,或者可能不是?因为这不会发生在一维数组中,而且我不知道 C# 中的任何语法允许您将内容放在 [] 中这样的地方。

对于三维数组,它生成 3 个星号:

public Foo(int[*, *, *] property1)
{
Property1 = property1;
}

是什么导致 Visual Studio 这样做?

我的 Visual Studio 版本是:Visual Studio for Mac Community 7.2.2 (build 11)。

我尝试在 Windows 版本的 Visual Studio - Visual Studio Community 2015 上对此进行测试。但我找不到执行此操作的按钮。根据this answer ,在“快速操作”中一个生成构造函数按钮,但我没有找到。也许它不在社区版本中?

最佳答案

    int[*, *] property1

这是由 Visual Studio 错误引起的。奇怪的语法与不一致数组的外观相匹配。当数组的下限为 0 时,数组是一致的,并且 C# 支持其语法。C# 没有可用于不一致的数组类型的语法,因此怪人 [*,*] 和编译它产生的错误。

这通常只发生在 C# 中,当您与能够创建此类数组类型的外部类型系统互操作时。我只知道 COM 是一个实际示例,它能够发出可由 C# 程序直接使用的类型信息。注意 this existing question 中的语法匹配, 另一个 here .

当然,您的属性(property)类型并不特殊。 VS 在 IDE 中集成的 Roslyn 代码中失去了它的弹珠。从事这项工作的团队在编写无错误测试代码方面没有良好的记录。我自己无法获得此重现,我使用的是 15.5.6 版,并且由于它生成的大量错误报告而避免更新到 15.6.x。它特定于 Mac 版本的可能性很小,操作系统受到 COM 的挑战。 VS2015 还没有这个功能,这就是为什么你找不到它,ReSharper 是一个流行的商业替代品。

在 VS 内部使用“帮助”>“发送反馈”>“报告问题”来告诉他们有关错误的信息。我没有看到针对此缺陷的现有错误报告,至少在 developercommunity.visualstudio.com 上搜索“生成构造函数”时没有匹配项。我不希望有很多程序员遇到这个错误或花时间报告它。解决方法很简单,只需将代码编辑为 int[,] property1

关于c# - 当我在 Visual Studio 中生成以二维数组作为参数的构造函数时,这些星号是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964542/

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