将自定义类型转换为int

时间:2017-11-03 01:56:08

标签: c#

我有一项家庭作业,其中我的任务是使用cardArray类从SuperCard类型的Random中随机化5张牌,所有值都返回为类型为SuperCard的数组。我想要了解的是如何将自定义类型SuperCard投射到int,以便使用Next()类中的Random方法。到目前为止我所拥有的是什么;

SuperCard[] hand = new SuperCard[5];
for (int index1 = 0; index1 <= 4; index1++)
{
    hand[index1] = rand.Next(cardArray[0], cardArray[51]);//cant figure out how to cast this   
}

如果我尝试投射rand.Next((int)cardArray[0],(int)cardArray[51]);我得到错误&#34;无法将类型SuperCard转换为int&#34;。我可以将数组转换为整数数组但不能再返回。

1 个答案:

答案 0 :(得分:1)

通过使用cardArray索引作为随机数来解决您的直接问题,而不是元素本身。即:

hand[index1] = cardArray[rand.Next(0, cardArray.Length)];

请注意,对cardArray有效的索引范围用于随机数,然后返回的数字用于实际索引cardArray以选择实际的卡。

其他几点:

  • 该方法存在Next(int)重载,假定范围的下限为0。因此,您可以使用rand.Next(cardArray.Length)代替。
  • 您现在拥有的代码可以(并最终将)多次选择同一张卡片。你真正想做的就是改组数组,然后选择前五个元素。参见例如Best way to randomize an array with .NET用于处理代码中的下一个障碍。