这是我的代码:
namespace ConsoleApplication3
{
class Module1
{
static void Main()
{
int i;
int j;
int[,] matriceFoglio;
string stringa = "";
for (i = 1; (i <= 11); i++)
{
stringa = "";
for (j = 1; (j <= 11); j++)
{
matriceFoglio(i, j) = 0;
stringa = (stringa + matriceFoglio[i,j]);
}
Console.WriteLine(stringa);
}
Console.ReadLine();
// disegno l'albero di natale
matriceFoglio[1, 5] = 1;
matriceFoglio[2, 4] = 1;
matriceFoglio[2, 5] = 1;
matriceFoglio[2, 6] = 1;
matriceFoglio[3, 3] = 1;
matriceFoglio[3, 4] = 1;
matriceFoglio[3, 5] = 1;
matriceFoglio[3, 6] = 1;
matriceFoglio[3, 7] = 1;
matriceFoglio[4, 5] = 1;
matriceFoglio[5, 5] = 1;
// disegno l'albero
Console.WriteLine("");
for (i = 1; (i <= 11); i++)
{
stringa = "";
for (j = 1; (j <= 11); j++)
{
stringa = (stringa + matriceFoglio[i, j]);
}
Console.WriteLine(stringa);
}
Console.ReadLine();
}
}
}
在for循环中,编译器抛出此错误:
预期的方法名称和使用未分配的本地变量&#39; matriceFoglio&#39;。
我不明白我做错了什么。
答案 0 :(得分:2)
我知道其他人已经指出了这一点,但只是在这里添加一些东西。这里有两个错误,这两个错误几乎都是编译器所说的。第一:
matriceFoglio(i, j) = 0;
这不是正确的语法 - 这是方法调用的语法,而不是数组赋值。这就是编译器希望这是一个方法名称的原因。这应该是
matriceFoglio[i, j] = 0;
此外,int[,] matriceFoglio;
在您使用时未初始化,因此编译器在此也绝对正确。你必须在使用它之前创建数组 - 你不能只是开始分配它。要理解为什么会这样,首先考虑如何实际实现数组:假设您要实现大小为10的数组。初始化数组时,运行时将在内存中“布局”10个连续位置并存储第一个位置项目。数组索引是初始地址的偏移量 - 这就是第一个项目是项目0的原因(没有偏移量,根据定义,第一个项目位于指针位置)。但是,如果要访问数组中的第五项,则其位置为(address of the first item) + (32 * 4)
(假设为32位地址)。这就是为什么你可以进行恒定时间随机访问 - 找到任意位置只是指针算法。
答案 1 :(得分:1)
首先,您需要初始化数组(在此示例中大小为10x10):
int[,] matriceFoglio = new int[10, 10];
其次,使用方括号来访问数组而不是大括号:
// replace matriceFoglio(i, j) = 0; with
matriceFoglio[i, j] = 0;
<强>更新强>
我想,另一个错误与不正确的循环索引有关,基本上没有索引为11
的元素(我假设数组大小为10x10)。它应该是:
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
}
}
答案 2 :(得分:1)
您需要使用new:
初始化matriceFogliomatriceFoglio = new int[10,10];
此外,当您为matriceFoglio指定值时,您需要使用方括号[]而不是括号,例如
matriceFoglio[i,j] = 0;