Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将带[]的索引应用于类型为';数组'';_C#_C# 4.0 - Fatal编程技术网

C# 无法将带[]的索引应用于类型为';数组'';

C# 无法将带[]的索引应用于类型为';数组'';,c#,c#-4.0,C#,C# 4.0,我得到以下代码的“无法将[]索引应用于'Array''类型的表达式”。。目的是创建一个计算器模板,然后调用这些方法来运行各种操作。 此处标记为//的区域出现错误。。请帮忙。在c#编码方面,我是一个新手,因此,非常感谢大家的帮助,如果有人也能给我解释一下这个问题,我会很高兴的。谢谢 private static Array NumberFeedLengthDecider() { Console.WriteLine("Please enter how many numbers that yo

我得到以下代码的“无法将[]索引应用于'Array''类型的表达式”。。目的是创建一个计算器模板,然后调用这些方法来运行各种操作。 此处标记为//的区域出现错误。。请帮忙。在c#编码方面,我是一个新手,因此,非常感谢大家的帮助,如果有人也能给我解释一下这个问题,我会很高兴的。谢谢

private static Array NumberFeedLengthDecider()
{
    Console.WriteLine("Please enter how many numbers that you would like to add.");
    int i = Convert.ToInt32(Console.ReadLine());
    int[] numbers = new int[i];

    return numbers;
}
private static int NumberFeed(Array numbers)
{
    Console.WriteLine("Please enter the numbers one by one, each followed by the 'Enter' key.");
    int i = numbers.Length;

    for (int counter = 0; counter < i; counter++)
    {
        int temp = Convert.ToInt32(Console.ReadLine());
        numbers[counter] = temp; //HERE
    }
    return i;
}
private static void NumberDisplay(Array numbers)
{
    Console.WriteLine("The numbers you have entered are: ");
    int i = (numbers.Length);

    for (int x = 0; x < i; x++)
    {
        Console.WriteLine(numbers[x]); //HERE
    }
}
private静态数组NumberFeedLengthDecider()
{
WriteLine(“请输入您要添加的数字数量。”);
inti=Convert.ToInt32(Console.ReadLine());
int[]数字=新的int[i];
返回号码;
}
专用静态整数进纸(数组编号)
{
Console.WriteLine(“请逐个输入数字,每个数字后面跟着“回车”键”);
int i=数字。长度;
用于(int计数器=0;计数器

基本上,我想创建一个方法来决定操作要运行的数字的数量,第一个是(numberFeedLengthDecider),然后是另一个方法来将数字输入该数组(NumberFeed),然后是另一个方法来显示这组数字(NumberDisplay)。但是由于某种原因,我似乎无法让它工作

数组
是数组的基类,它的元素不是“强类型”;你可以在里面放任何东西


由于您似乎只处理
int
元素,因此应该在现在使用
Array
的位置使用
int[]
。然后可以使用[]索引访问元素,并确保每个元素都是要引导的
int

你可以用这样的东西重写这段代码 检查IEnumerable接口和List类 此代码更干净,删除了NumberFeedLengthDecider方法,此方法在代码中制造噪音。当您不知道有多少输入将使用List类时,它比经典数组使用更多内存,但在这种情况下可以完成任务。要获得更好的转换,请查看TryParse和Parse方法(例如int.TryParse()和int.Parse()),并更多地使用异常处理

public List<int> Insert() 
{
      //Output here something to the console

      List<int> numbers  = new List<int>();

      while(true) 
      {
            var input = Console.ReadLine();
            if(input.ToLower() == "done") break;
            try 
            {

                 numbers.Add(Convert.Int32(input));
            }
            catch(FormatException e)
            {
                  Console.WriteLine(e.Message);
            }
     }
     return numbers;

}

public void Print(IEnumerable<int> numbers)
{
     foreach(var num in numbers) 
     {
          Console.WriteLine(num);
     }
}
公共列表插入()
{
//在这里输出一些东西到控制台
列表编号=新列表();
while(true)
{
var input=Console.ReadLine();
如果(input.ToLower()=“完成”)中断;
尝试
{
Add(Convert.Int32(输入));
}
捕获(格式化异常)
{
控制台写入线(e.Message);
}
}
返回号码;
}
公共作废打印(IEnumerable number)
{
foreach(数值形式的变量num)
{
控制台写入线(num);
}
}

对不起,我不明白。。Sorry不要使用
私有静态整数进纸(数组编号)
,使用
私有静态整数进纸(int[]编号)
。只需将
Array
替换为
int[]
即可。不用抱歉,你在学习,我可能不是最好的老师!哦。知道了。例如,如果我使用字符,那么我将使用char[]correct??因此,要调用它们,我需要使用这个NumberFeedLengthDecider();NumberFeed();NumberDisplay();对吗?对不起,我整天都在外面。是的,这似乎是正确的顺序。您需要保留第一个方法的返回值,并将其提供给其余方法:
int[]array=NumberFeedLengthDecider()
NumberFeed(数组)和<代码>数字显示(数组)。谢谢大家的帮助!真的很感激!