【C#基础知识】——初识委托(delegate)

委托是C#语言很重要的一个知识点,在后续的编码中会大量使用到。
委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。
委托是事件的基础,匿名方法,Lambda表达式都是建立在委托的基础之上的。


  • 说白了委托就是可以把方法当做(方法的)参数来传递。

委托是引用类型,在使用委托时首先要定义–>声明–>实例化–>作为参数传递给方法–>使用委托。


委托语法:

访问修饰符 delegate 返回值类型 委托名称(参数列表);

public delegate void MyDelegate(int a, int b);

委托声明的关键字:delegate。

委托声明的位置可以在类外,也可以在类内。

声明的委托要和绑定的方法的“签名”保持一直;(签名指的是
方法的返回值类型,以及参数列表的类型)


加减乘除事例:

 /// 
 /// 声明一个委托
 /// 
 public delegate void CalcDelegate(int numA, int numB);

 public class Calc : MonoBehaviour
    {

        private void Start()
        {
            int numA = 10;
            int numB = 2;

            // 传入和委托类型相同签名的方法
            MyCalc(numA, numB, JiaFa);
        }

        /// 
        /// 把方法当做(方法的)参数来传递,a和b是int 类型,而方法的类型就是委托类型,
        /// 
        private void MyCalc(int a,int b,CalcDelegate calcDel)
        {
            calcDel(a, b);
        }
        private void JiaFa(int a, int b)
        {
            Debug.Log(string.Format("{0} + {1} = {2}", a, b, a + b));
        }
        private void JianFa(int a, int b)
        {
            Debug.Log(string.Format("{0} - {1} = {2}", a, b, a - b));
        }
        private void ChengFa(int a, int b)
        {
            Debug.Log(string.Format("{0} * {1} = {2}", a, b, a * b));
        }
        private void ChuFa(int a, int b)
        {
            Debug.Log(string.Format("{0} / {1} = {2}", a, b, a / b));
        }
    }

你可能感兴趣的:(NGUI基础知识)