C#foreach字符串数组

时间:2019-08-11 02:36:13

标签: c#

class DM_Matrix {
     public string[] DMInput_Name = new string[] {}; 
     public string[] DMOutput_Name = new string [] {};
     public int[] DMInput = new int[] { 99, 1, 2, 3, 4 };
     public int[] DMOutput = new int[] { 99, 1, 2, 3, 4 };              
}

public void Initialize() {
     foreach (var i in DM_Matrix.DMInput_Name) {
          CrestronConsole.PrintLine("[DM.Module.Input_Name" 
               + DM_Matrix.DMInput_Name[i]);
     }
}

“ i”上的编译器错误:

  

“(局部变量)字符串i

     

错误无法将类型'string'隐式转换为'int'“

我正在尝试打印整个DM.Module.Input_Name数组

我试图设置使用“ int i”代替“ var i”或将i从字符串强制转换为整数不会带来任何乐趣。不知道为什么将“ i”识别为字符串。以我的理解,对于数组,应将其识别为“ int”。

2 个答案:

答案 0 :(得分:2)

您使用的是 foreach 循环,而不是 for 循环。如果这是这样的for循环:

foreach (var i = 0 ; i < DM_Matrix.DMInput_Name.Length ; i++)
{
    CrestronConsole.PrintLine("[DM.Module.Input_Name" +DM_Matrix.DMInput_Name[i]);
}

然后是的,您可以将i用作数组索引。

但是在foreach循环中,循环变量表示数组的,因此您的循环应这样写:

foreach (var name in DM_Matrix.DMInput_Name) {
    CrestronConsole.PrintLine("[DM.Module.Input_Name" + name);
}

答案 1 :(得分:2)

在这里您需要了解forforeach循环之间的区别。

for loop:如果要通过 index 访问数组中的元素,请使用for loop

foreach loop:您不想使用索引,而是要遍历每个对象 ,然后使用foreach loop

要解决您的问题,请使用for循环或foreach循环,您将两个循环混为一谈。

使用for循环的解决方案,

//Use index to get value from an array
for (int i = 0; i < DM_Matrix.DMInput_Name.Length; i++)
     {
         CrestronConsole.PrintLine("[DM.Module.Input_Name" +DM_Matrix.DMInput_Name[i]);
     }

使用foreach循环的解决方案

//Iterate over elements instead of index
foreach (var item in DM_Matrix.DMInput_Name)
     {
         CrestronConsole.PrintLine("[DM.Module.Input_Name" + item);
     }