【发布时间】:2009-03-29 11:41:04
【问题描述】:
我下面的代码有编译错误,
错误 1 无法将类型 'TestArray1.Foo[,,*]' 隐式转换为 'TestArray1.Foo[][][]' C:\Users\lma\Documents\Visual Studio 2008 \Projects\TestArray1\TestArray1\Program.cs 17 30 TestArray1
有人有什么想法吗?这是我的全部代码,我使用的是 VSTS 2008 + Vista 64 位。
namespace TestArray1
{
class Foo
{
}
class Program
{
static void Main(string[] args)
{
Foo[][][] foos = new Foo[1, 1, 1];
return;
}
}
}
编辑:版本 2。我有另一个版本的代码,但仍然有编译错误。有什么想法吗?
Error 1 Invalid rank specifier: expected ',' or ']' C:\Users\lma\Documents\Visual Studio 2008\Projects\TestArray1\TestArray1\Program.cs 17 41 TestArray1
Error 2 Invalid rank specifier: expected ',' or ']' C:\Users\lma\Documents\Visual Studio 2008\Projects\TestArray1\TestArray1\Program.cs 17 44 TestArray1
namespace TestArray1
{
class Foo
{
}
class Program
{
static void Main(string[] args)
{
Foo[][][] foos = new Foo[1][1][1];
return;
}
}
}
编辑:版本 3。我想我想要一个锯齿状数组。并在向其他人学习之后。这是我的代码修复,它在 VSTS 2008 中编译得很好。我想要的是一个锯齿状数组,目前我只需要一个元素。谁能检查我的代码是否正确以实现我的目标?
namespace TestArray1
{
class Foo
{
}
class Program
{
static void Main(string[] args)
{
Foo[][][] foos = new Foo[1][][];
foos[0] = new Foo[1][];
foos[0][0] = new Foo[1];
foos[0][0][0] = new Foo();
return;
}
}
}
提前致谢, 乔治
【问题讨论】:
-
第 3 版看起来不错,但不得不怀疑 size=1 的事情。您确实意识到 foos 只是 int foos 的复杂版本; ?
-
@Henk,其实数组定义是xsd工具自动生成的C#文件。
-
好的,但是你可能想在返回之前再添加 1 行:foos[0][0][0] = new Foo();
-
@Henk,非常感谢!为了这个讨论线程的完整性,我添加了这一行。 :-)
-
是的,这就是你想要的。不过,return 语句是多余的。