JUST DO IT ~

          我只想當個程序員

          c# delegate method 和接口實現的動態的區別。







           

          using System;
          delegate double Function(double x); // 代理函數
          class Multiplier
          {
              
          double factor;
              
          public Multiplier(double factor)
              
          {
                  
          this.factor = factor;
              }

              
          public double Multiply(double x)
              
          {
                  
          return x * factor;
              }

          }


          public interface IFun {
              
          double Function(double x);
          }


          class funImp1 : IFun
          {
              
          double factor;
              
          public funImp1(double factor)
              
          {
                  
          this.factor = factor;
              }

              
          public double Function(double x)
              
          {
                  
          return x * factor;
              }

          }


          class funImp2 : IFun
          {
              
          public double Function(double x)
              
          {
                  
          return  Math.Sin(x);
              }


          }



          class Test
          {
              
          static double Square(double x)
              
          {
                  Console.WriteLine(
          "1  靜態方法  static double Square(double x)"); 
                  
          return x * x;
              }

              
          static double[] Apply(double[] a, Function f)
              
          {


                  Console.WriteLine(
          "2   double[] Apply(double[] a, Function f) " + f ); 


                  
          double[] result = new double[a.Length];
                  
          for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);  // 自己使用當成函數名稱 
                  return result;
              }




              
          static double[] Apply(double[] a, IFun f)
              
          {


                  Console.WriteLine(
          "2   double[] Apply(double[] a, Function f) " + f);


                  
          double[] result = new double[a.Length];
                  
          for (int i = 0; i < a.Length; i++) result[i] = f.Function(a[i]); // 調用接口中制定的方法 
                  return result;
              }





              
          static void Main()
              
          {
                  
          double[] a = 0.00.51.0 };
                  
          double[] squares = Apply(a, new Function(Square));
                  
          double[] sines = Apply(a, new Function(Math.Sin));
                  Multiplier m 
          = new Multiplier(2.0);
                  Function f 
          = new Function(m.Multiply);
                  
          double[] doubles = Apply(a, f );

                 
                  
          double[] b = 0.10.51.0 };
                  doubles 
          = Apply(b, f );


                  IFun ifun 
          = new funImp1(2);
                   doubles 
          = Apply(a, ifun );
                   Console.WriteLine(
          " "+doubles);




              }

          }


           

          posted on 2008-02-11 13:00 小高 閱讀(677) 評論(0)  編輯  收藏 所屬分類: DotNet

          導航

          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關注的blog

          手冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吉林市| 容城县| 焉耆| 呈贡县| 肥西县| 綦江县| 唐河县| 昌平区| 乐平市| 米林县| 梧州市| 密云县| 德安县| 吉水县| 巩留县| 汾西县| 晋中市| 高尔夫| 行唐县| 宜兰县| 固原市| 同心县| 宜都市| 兴国县| 新竹县| 揭阳市| 全州县| 三门峡市| 焦作市| 大名县| 濮阳县| 延边| 安吉县| 张掖市| 郧西县| 云浮市| 财经| 凌海市| 河南省| 青神县| 新源县|