c#在程序中有多处用到,类似如下代码。
for(int i=0; i<a.count; i++)
{
  for(int j=0; j<a[i].count; j++)
  {
    switch(a[i].b[j].GetType().toString())
    {
      .....//程序处理
    }
  }
}-----------------------------------------
有没有好的办法,能将这些处理进行简化或者有别的更好的写法?

解决方案 »

  1.   

    即使我用工厂设计模式,也只能是替换掉switch里面的分类,我想替换循环。
      

  2.   

    虽然还是循环,用 foreach 会好看一点
      

  3.   

    可以这样写:void ForEachB( A a, Action<object> todo )
    {
      for(int i=0; i<a.count; i++)
      {
        for(int j=0; j<a[i].count; j++)
        {
          todo(a[i].b[j]);
        }
      }
    }
    如果用2008还可以把它定义成扩展方法
      

  4.   


    即使提出来,还是用for循环做的不是吗? 我方法里面本来已经没有别的东西了。
      

  5.   

    任何地方 switch 都是最好要避免的
    尤其在循环里
      

  6.   


    如果不用switch,我只能用 if ..else if...else... 难道这样,就好吗?
      

  7.   

    你不是说用设计模式了么?
    if .. else if .. 和 switch 的性质是一样的。