程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#利用lambda表達式將函數作為參數或屬性跨類傳遞

C#利用lambda表達式將函數作為參數或屬性跨類傳遞

編輯:C#入門知識

在編碼時,由於開始是在winform下進行簡單的測試開發的,後來代碼多了,就想分到不同的類裡邊去,可是因為原來的測試是在同一個form下的,所以對於函數調用可以很方便,而一旦跨類之後,就會發現,這函數的耦合度太高,以至於不知道該怎麼樣解耦到類裡邊去。這時,不妨使用委托類型的Func和Action來實現。

下面是最開始測試時在winform裡寫的簡單代碼

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FunctionPass
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
        }


        private void buttonTest_Click(object sender, EventArgs e)
        {
            test();
        }

        public void test()
        {
            string sourceStr = collectData();
            string digitStr = fetchDigit(sourceStr);
            MessageBox.Show("source:" + sourceStr + "\r\n digit:" + digitStr);
        }

        public string collectData()
        {
            return Guid.NewGuid().ToString();
        }

        public string fetchDigit(string sourceStr)
        {
            Regex regex = new Regex(@"\d*");
            MatchCollection digitCollection=regex.Matches(sourceStr);
            string digitStr = "";
            foreach (Match digitMatch in digitCollection)
	        {
                digitStr += digitMatch;
	        }           
            return digitStr;
        }
    }
}

這裡通過colloectData函數收集數據,再通過fetchDigit提取數據中的數字,之後通過test函數顯示結果。

 

現在我想把顯示結果做成一個單獨的類(比如Test類),以便後面更好的擴展。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FunctionPass
{
    public class Test
    {
        public void test()
        {
            string sourceStr = collectData();
            string digitStr = fetchDigit(sourceStr);
            MessageBox.Show("source:" + sourceStr + "\r\n digit:" + digitStr);
        }
    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved