zoukankan      html  css  js  c++  java
  • c#利用委托传递函数参数(1)

    本次旨在解决 同参不同名 的函数作为参数传递的情况

    情景:

    一下两个函数分别多次重复调用了两个同参不同名的函数(实际上总共有3个这样的函数),函数结构基本相同,只有调用的函数名不一样,显然可以整合在一个函数中,减少代码量;

     1 private void button1_Click(object sender, EventArgs e)
     2         {
     3             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "Z001522600");
     4             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "C800522635");
     5             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "X890522635");
     6             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "Y003522635");
     7             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "X899522635");
     8             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "C018522635");
     9             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, "S311520000");
    10             MessageBox.Show("ok");
    11         }        
    12 
    13         private void btnUpdateAssetGps_Click(object sender, EventArgs e)
    14         {
    15             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "Z001522600");
    16             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "C800522635");
    17             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "X890522635");
    18             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "Y003522635");
    19             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "X899522635");
    20             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "C018522635");
    21             clsLineSeg.UpdateAssetDataGpsPostion(map, tblRouteData, "S311520000");
    22             MessageBox.Show("ok");
    23         }

    方案:

    但是要想完全统一,肯定需要将要调用的函数作为新函数的参数传递进去,这里就可以用到c#的委托,如下:

        public delegate void UpdateMethodHandler(IMap map, ITable tblRouteData,string routeCode);//声明委托
     1 //修改简化待调用函数
     2 public void UpdateAssetDataGps84Postion(IMap map, ITable tblRouteData, string routeCode)
     3         {
     4             clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, routeCode);
     5         }
     6 
     7         public void UpdateDiseasePostion(IMap map, ITable tblRouteData, string routeCode)
     8         {
     9             clsLineSeg.UpdateDiseasePostion(map, tblRouteData, routeCode);
    10         }
     1 //利用委托传递函数名参数
     2         public void btnUpdateClick(UpdateMethodHandler UpdateMethodHandler)
     3         {
     4             var routeLst = GetRouteLst();
     5             if(routeLst==null||routeLst.Length<=0)
     6             {
     7                 MessageBox.Show("请输入路线编码!");
     8                 return;
     9             }
    10             foreach(var r in routeLst)
    11             {
    12                 UpdateMethodHandler(map, tblRouteData, r);
    13             }
    14             MessageBox.Show("ok");
    15         }
     1 //函数调用简化
     2         private void btnUpdateStakeTable_Click(object sender, EventArgs e)
     3         {
     4             btnUpdateClick(UpdateAssetDataGps84Postion);            
     5             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "Z001522600");
     6             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "C800522635");
     7             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "X890522635");
     8             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "Y003522635");
     9             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "X899522635");
    10             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "C018522635");
    11             //clsLineSeg.UpdateAssetDataGps84Postion(map, tblRouteData, "S311520000");
    12             //MessageBox.Show("ok");
    13         }      
  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/lyd2016/p/6381399.html
Copyright © 2011-2022 走看看