嗨,伙计们,我写了这段代码,我有两个错误。
- 无效的排名说明符:预期的","或"]"
- 无法将带有 [] 的索引应用于类型为"int"的表达式
你能帮忙吗?
static void Main(string[] args)
{
ArrayList numbers = new ArrayList();
foreach (int number in new int[12] {10,9,8,7,6,5,4,3,2,1}) //error No.1
{
numbers.Add(number);
}
numbers.Insert(numbers.Count - 1, 75);
numbers.Remove(7);
numbers.RemoveAt(6);
for(int i=0; i<numbers.Count; i++)
{
int number = (int) number[i]; // error No.2
Console.WriteLine(number);
}
}
1 - 你不必指定数组的长度,只需说 new int[]
2 - 数字只是一个整数,我认为您正在尝试访问数字[i]
对于 1:
foreach (int number in new int[] {10,9,8,7,6,5,4,3,2,1})
对于 2:
int number = (int)numbers[i];
您正在使用number
,您应该有numbers
(复数(。
using System;
using System.Collections;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
ArrayList numbers = new ArrayList();
foreach (int number in new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 })
{
numbers.Add(number);
}
numbers.Insert(numbers.Count - 1, 75);
numbers.Remove(7);
numbers.RemoveAt(6);
for (int i = 0; i < numbers.Count; i++)
{
int number = (int)numbers[i];
Console.WriteLine(number);
}
}
}
}
为什么不对 #1 执行以下操作?
for (int x = 10; x > 0; --x)
{
numbers.Add(number);
}
尽管将其声明为 int[12](作为明显的意图?(,但似乎我们只使用了从 10 到 1 的值,包括 10 和 1。当for
的意图更加清晰时,为什么要在这种情况下使用foreach
?
您应该将数组初始化为
new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
编译器将为您设置大小。但你正在以艰难的方式做到这一点。试试这个:
for (int i = 10; i > 0; i-- )
{
numbers.Add(i);
}
如果您使用的是 .Net 3.5,则还可以使用 System.Linq.Enumerable 创建一个范围:
IEnumerable<int> numbers = Enumerable.Range(1, 10).Reverse();
这将取代 ArrayList,这在 3.5 中毫无意义。由于您刚刚开始,ArrayList 一开始可能更容易掌握,但请记住泛型和 IEnumerables 之类的东西,它们非常重要。