我的C#类中的范围问题

时间:2015-10-09 04:32:25

标签: c# algorithm oop data-structures

我有一个像

这样的课程
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

3 个答案:

答案 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");
    // ... 
}

如果长度不合适,请抛出异常!