像这样的两个函数,仅仅是一个函数参数的不同,就要写成两个函数,请高手赐教了,如何写成一个函数来代替。请看代码:
            private int FindListElementIndex1(stationPoint SP)
            {
                int n;
                n = -1;
                foreach (var p in PointNxEyCollect)
                {
                    n++;
                    if (p.pointNumber == SP.pointNumber)
                    {
                        break;
                    }
                }
                return n;
            }...........................................................................            private int FindListElementIndex(aimAtPoint ap)
            {
                int k = -1;
                foreach (var p in PointNxEyCollect)
                {
                    k++;
                    if (p.pointNumber == ap.pointNumber)
                    {
                        break;
                    }
                }
                return k;
            }
变量说明:
            List<Point> PointNxEyCollect = new List<Point>();
            List<stationPoint> stationPointCollect = new List<stationPoint>();
            List<aimAtPoint> aimAtPointCollect = new List<aimAtPoint>();

解决方案 »

  1.   

    用List<T>作为参数,实现重载
      

  2.   

    抽象出接口...这两个方法都只用到了aimAtPoint和stationPoint的一个属性pointNumber,Point也有这个属性...用接口可以解除三者的耦合...
      

  3.   


    看这个:
    http://www.cnblogs.com/anlyren/archive/2008/01/25/simple_Factory_Pattern.html
      

  4.   

              成员pointNumber的数据类型是什么?假如是int吧: 
                private int FindListElementIndex(int poingNumber) 
                { 
                    int k = -1; 
                    foreach (var p in PointNxEyCollect) 
                    { 
                        k++; 
                        if (p.pointNumber == poingNumber) 
                        { 
                            break; 
                        } 
                    } 
                    return k; 
                } 
      

  5.   

    仅仅是个例子...还可以优化得更好,按你的需求去设计...interface IPoint
    {
    int pointNumber{get;set;}
    }            List <IPoint> PointNxEyCollect = new List <IPoint>(); 
                private int FindListElementIndex(IPoint ap) 
                {
                    int k = -1; 
                    foreach (var p in PointNxEyCollect) 
                    { 
                        k++; 
                        if (p.pointNumber == ap.pointNumber) 
                        { 
                            break; 
                        } 
                    } 
                    return k; 
                }