C# 无法将带[]的索引应用于类型为';数组'';
我得到以下代码的“无法将[]索引应用于'Array''类型的表达式”。。目的是创建一个计算器模板,然后调用这些方法来运行各种操作。 此处标记为//的区域出现错误。。请帮忙。在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
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(数组)代码>和<代码>数字显示(数组)代码>。谢谢大家的帮助!真的很感激!