我正在从 Visual Studio Express 2008 中用 C# 测试一些代码:
delegate void Hm(int k);
static void Main(string[] args)
{
char[] m = new char[10];
m[0] = 'H'; m[5] = 'M';
m[1] = 'o'; m[6] = 'u';
m[2] = 'l'; m[7] = 'n';
m[3] = 'a'; m[8] = 'd';
m[4] = ' '; m[9] = 'o';
unsafe { fixed (char* p = m) { Hm H = (k) => recurd(k, p); H(0); } }
Console.ReadLine();
}
static unsafe int recurd(int i, char* p)
{
Console.WriteLine(p[i]);
if (i == 10) return 0; else return recurd(i + 1, p);
}
它编译完美,但如果我对“recurd”函数做一点改动:
static unsafe int recurd(int i, char* p)
{
Console.WriteLine(p[i]);
i == 10 ? 0 : recurd(i + 1, p);
// if (i == 10) return 0; else return recurd(i + 1, p);
}
我收到一条错误消息“只有对象赋值、调用、递增、递减和 new 的表达式可以用作指令”(这是西类牙语的翻译)。
为什么会出现此错误?我该如何解决?
最佳答案
您缺少“return”关键字:
return i == 10 ? 0 : recurd(i + 1, p);
关于c# - 为什么这段代码不能编译? - 对象赋值、调用、递增、递减和新建可用作指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913215/