首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求写一个循环.该如何处理

2013-03-10 
求写一个循环.public static void OnlyOneSelectAndCray(CheckBox p1, CheckBox p2, CheckBox p3, CheckBo

求写一个循环.

       public static void OnlyOneSelectAndCray(CheckBox p1, CheckBox p2, CheckBox p3, CheckBox p4)
       {
           OnlyOneSelectAndCray(p1, p2);
           OnlyOneSelectAndCray(p3, p2);
           OnlyOneSelectAndCray(p3, p1);
           OnlyOneSelectAndCray(p4, p1);
           OnlyOneSelectAndCray(p4, p2);
           OnlyOneSelectAndCray(p4, p3);
       }
       public static void OnlyOneSelectAndCray(CheckBox p1, CheckBox p2, CheckBox p3, CheckBox p4, CheckBox p5)
       {
           OnlyOneSelectAndCray(p1, p2);
           OnlyOneSelectAndCray(p3, p2);
           OnlyOneSelectAndCray(p3, p1);
           OnlyOneSelectAndCray(p4, p1);
           OnlyOneSelectAndCray(p4, p2);
           OnlyOneSelectAndCray(p4, p3);
           OnlyOneSelectAndCray(p5, p1);
           OnlyOneSelectAndCray(p5, p2);
           OnlyOneSelectAndCray(p5, p3);
           OnlyOneSelectAndCray(p5, p4);
       }

每两个参数之间都执行方法OnlyOneSelectAndCray.
能写一个不限参数个数的方法吗? params CheckBox[] p1
求大神指教.
[解决办法]
   public static void OnlyOneSelectAndCray(params  CheckBox[] p1)
        {
            for (int i = 0; i < p1.Length; i++)
            {
                for (int j = i + 1; j < p1.Length; j++)
                {
                    OnlyOneSelectAndCray(p1[i], p1[j]);
                }
            }
        }
     

[解决办法]
public static void OnlyOneSelectAndCray(param CheckBox[] checkboxs)
{
    var list = checkboxs.SelectManay(x => checkboxs.Select(y => new { x, y })).Where(x => x.x.GetHashCode() > x.y.GetHashCode()).ToList();


    foreach (var item in list) OnlyOneSelectAndCray(item.x, item.y);
}
[解决办法]
改一下吧

  public static void OnlyOneSelectAndCray(CheckBox p1,CheckBox p2)
        {
        }

        public static void OnlyOneSelectAndCray(params  CheckBox[] p1)
        {
            if (p1 == null 
[解决办法]
 p1.Length < 2)
                return;

            if (p1.Length == 2)
            {
                OnlyOneSelectAndCray(p1[0], p1[1]);
                return;
            }

            for (int i = 0; i < p1.Length; i++)
            {
                for (int j = i + 1; j < p1.Length; j++)
                {
                    OnlyOneSelectAndCray(p1[i], p1[j]);
                }
            }
        }

热点排行