我有一个像
这样的课程0 8 ********
1 6 ******
2 3 ***
3 7 *******
并且编译器不喜欢其签名使用public class DiceOnYacht
{
private static byte numdie = 5;
// ...
private bool isSmallStraight ( byte [numdie] die )
{
// ...
}
}
的方法,例如上面的方法numdie
。对于那些说
错误CS1525:意外的符号
isSmallStraight
,'或`]'
此外,由于某些奇怪的原因,它存在以下
中表示的行的问题numdie', expecting
因为它说
意外的符号“得分”
我无法想到这些错误的任何逻辑基础。有什么指导吗?
您可以看到所有here
答案 0 :(得分:3)
数组的大小不能在参数中使用。
private bool isSmallStraight ( byte [] die )
{
//use die
}
阵列上有方法可以找到它的尺寸。
die.Length
非常有用。
有关在C#https://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx
中使用数组的更多信息答案 1 :(得分:1)
参数中不应提及字节数组的大小。它应该如下所示。
byte[] b = new byte[numdie];
isSmallStraight(b); // Calling method 'isSmallStraight'
//...
private bool isSmallStraight ( byte [] die )
{
}
答案 2 :(得分:1)
我想您希望用户传入类型为byte
且长度为numdie
的数组。但是你不能在参数中做到这一点。您只能在构造数组时指定数组的长度,而不是在声明数组时指定数组的长度。你可以这样做:
byte[] array = new byte[numdie];
但不是这样:
byte[numdie] array;
有一个工作原因:你可以检查方法中数组的长度。所以你的方法是这样的:
private bool isSmallStraight (byte[] die)
{
if (die.Length != numdie) {
throw new ArgumentException ("The length of die is not equal to numdie");
// ...
}
如果长度不合适,请抛出异常!