【发布时间】:2015-10-09 04:32:25
【问题描述】:
我有一门课
public class DiceOnYacht
{
private static byte numdie = 5;
// ...
private bool isSmallStraight ( byte [numdie] die )
{
// ...
}
}
并且编译器不喜欢签名使用numdie 的方法,例如上面的方法isSmallStraight。对那些它说的人
错误 CS1525:意外符号
numdie', expecting,' 或 `]'
此外,由于某些奇怪的原因,它与以下表示的行有问题
public byte getAnyScore ( Category cat, byte [numdie] die )
{
byte score;
switch (cat)
{
case Category.Ones:
case Category.Twos:
case Category.Threes:
case Category.Fours:
case Category.Fives:
case Category.Sixes:
case Category.Sevens:
case Category.Eights:
score = getSinglesScores(cat,die);
break;
case Category.SmallStraight
score = isSmallStraight(die) ? 30 : 0; // this line
break;
case Category.AllDifferent
score = die.Distinct().Count() == 5 ? 40 : 0; // and this line
break;
case Category.AllSame
score = die.Distinct.Count() == 1 ? 50 : 0; // and this line
break;
}
return score;
}
因为它说
意外符号“分数”
我想不出这些错误的任何逻辑依据。有什么指导吗?
你可以看到这一切here
【问题讨论】:
-
numdie 不是一种类型,只是一个变量名,所以我认为您不能像那样使用它,尽管我会要求有人确认。第二个错误是你需要':'在每个案例之后,你没有超过 Category.Eight
-
byte[numdie]die应该做什么。是字节数组吗?您必须在方法内分配其大小 -
@M.kazemAkhgary 我不能在方法的签名中强制数组的大小?
-
不。内部方法做
byte[] die= new byte[numdie]; -
@CarlyFiorina 不,您可以向方法签名添加任何约束。一种方法是将自定义属性添加到参数并在运行时检查它 f.e.或者只做一个简单的 if 并在它无效时抛出
ArgumentException
标签: c# algorithm oop data-structures