2017-07-27 210 views
0

我想做一个整数值的数组列表,并运行一些基本的数学运算,如下所示。在c#unity中定义数组列表。

int dice1 = 4; 
int dice2 = 3; 
int dice3 = 6; 
int dice4 = 4; 
int dice 5 = 5; 

ArrayList numbers = new ArrayList(); 
     numbers[4] = dice5; 
     numbers[3] = dice4; 
     numbers[2] = dice3; 
     numbers[1] = dice2; 
     numbers[0] = dice1; 

numbers[3] = numbers[3] * numbers[2]; 

但是,计算机不允许我这样做,会产生一个错误“操作‘*’不能适用于类型‘对象’和‘对象’的操作数”。我该如何解决?我认为我必须将数组列表定义为一个整数数组......但是我不太确定。请保持简单的答案,因为我对C#团队相当陌生。

谢谢!使用数组列表

使用List<int>int[]

然后所含的对象

回答

2

ArrayList中存储的一切作为一个“对象”,基本上是最基本类型的东西可以在C#中。你有几个选择。如果你想使用的ArrayList保持,那么你就需要做投你相乘,喜欢的东西:

numbers[3] = ((int)numbers[3]) * ((int)numbers[2]) 

或者,你可以沟ArrayList和使用更现代的名单<>类型。您需要添加using System.Collections.Generic顶端,那么你的代码会像:

int dice1 = 4; 
int dice2 = 3; 
int dice3 = 6; 
int dice4 = 4; 
int dice5 = 5; 

List<int> numbers = new List<int>(); //List contains ints only 
    numbers[4] = dice5; 
    numbers[3] = dice4; 
    numbers[2] = dice3; 
    numbers[1] = dice2; 
    numbers[0] = dice1; 

numbers[3] = numbers[3] * numbers[2]; //Works as expected 

最后,如果你知道你的收藏只会有一定数量的事情,你可以使用数组来代替。您的代码现在是:

int dice1 = 4; 
int dice2 = 3; 
int dice3 = 6; 
int dice4 = 4; 
int dice5 = 5; 

int[] numbers = new int[5]; //Creates an int array with 5 elements 
//Meaning you can only access numbers[0] to numbers[4] inclusive 
    numbers[4] = dice5; 
    numbers[3] = dice4; 
    numbers[2] = dice3; 
    numbers[1] = dice2; 
    numbers[0] = dice1; 

numbers[3] = numbers[3] * numbers[2]; //Works as expected 
+0

非常感谢您的回答。非常详细,非常有帮助!我使用ArrayLists的原因是我可以从中删除元素。 –

+0

在这种情况下,您也可以从List <>中删除东西。这里有一堆关于它的方法! https://msdn.microsoft.com/en-us/library/s6hkc2c4(v=vs.110).aspx –

1

避免被键入的而不是对象