English 中文(简体)
如何在循环外访问字符串数组
原标题:
  • 时间:2009-03-17 11:35:59
  •  标签:
for (int z = 0; z < alParmValues.Count; z++)
{
   //string[] def;
   string[] asd = alParmValues[z].ToString().Split( , );//this is of type string.collections and u cant cast it to a arraylist or array 
   //if (HUTT.clsParameterValues.bCustomObj == false)

   string[] def = alMethSign[z].ToString().Substring(alMethSign[z].ToString().IndexOf( ( ) + 1, alMethSign[z].ToString().IndexOf( ) ) - (alMethSign[z].ToString().IndexOf( ( ) + 1)).Split( , );
}

我需要在循环外访问两个字符串数组。这个问题有更好的解决方案吗?我不能使用 ArrayList 或将它们声明为 public,那么我该如何访问它们?

最佳回答

要访问循环外的内容,只需在循环外声明,然后在循环处理完成后进行操作:

string[] arr = ...

for (int z = 0; z < alParmValues.Count; z++)
{
  // work with arr...
}

var item = arr[3]; // Accessed outside of loop.

然而,你的代码似乎有一些问题。我建议你再仔细考虑一下循环体和你想在那里做什么。例如,考虑这一行:

for (int z = 0; z < alParmValues.Count; z++)
{
  // ...
  string[] asd = alParmValues[z].ToString().Split( , );

  // There aren t any more references to asd after this point in the loop,
  //   so this assignment serves no purpose and only keeps its last assigned
  //   value.
}

这个任务是毫无意义的;每次循环时,您只是覆盖以前的 asd 值,并且您在之后的循环中从未使用过它。

问题回答

asddef 的范围限制在 for 循环的主体内。如果需要访问它们,则需要在循环外声明它们。把它们放到外面是否有问题? 它们放到外面是否有问题?

请在MSDN上查看“集合类教程”的链接

asd 和 def 都是字符串数组,其作用域限于 for 循环。你不能在循环外访问它们。如果要这样做,请尝试在 for 循环之外声明它们。

首先,如果您希望访问在循环内提取/计算的数据,则必须在循环之外声明一个结果容器,然后在循环之内填充其值。

其次,不要考虑将从split方法返回的数组强制转换,而是要考虑处理它们的内容

假设您想要从原始alParmValues数组的所有元素中获取组合结果,并将其放入单个结果对中,那么我会使用类似以下伪代码的东西。当然,您需要为您的alParmValuesalMethSign元素填充类型,添加分号等等。(由于您的问题未解释在循环中处理的两个数组的内容和关系,因此我只是独立地处理它们。)这不是完整的代码,只是一个让您开始的草图:

ArrayList allValues = new ArrayList()
foreach (??? parameter in alParmValues) {
    foreach (String value in parameter.ToString().Split( , )) {
        allValues.add(value)
    }
}

ArrayList allMethSignValues = new ArrayList()
foreach (??? methSign in alMethSign) {
    String thisString = methSign.toString()
    int open = thisString.indexOf( ( )
    int close = thisString.indexOf( ) )
    String parenPart = thisString.substring(open + 1, close - open - 1)
    foreach (String value in parenPart.split( , )) {
        allMethSignValues.add(value)
    }
}




相关问题
热门标签