ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#学习day03_1-委托,委托多播

2021-11-30 22:31:06  阅读:166  来源: 互联网

标签:Console num1 委托 C# nc Day03 day03 WriteLine num2


以下代码可在 github 找到

using System;

/**菜鸟上关于委托
 * 语法: delegate <return type> <delegate-name> <parameter list>
 */

public class Day03_1
{

	/*
	 实例化委托(Delegate)
	一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。
	控制台:
	AddNum=>num1=35
	Value of num1= 35
	MultNum=>num2=50
	Value2 of num2= 50
	nc=>Day03_1+numberChanger
	nc1>Day03_1+numberChanger
	nc2>Day03_1+numberChanger
	nc+=nc2>Day03_1+numberChanger
	AddNum=>num1=40
	MultNum=>num2=250
	GetNum=>num1=40 num2=250
	nc(5)=>290
	num1:40 num2:250

	 */
	public delegate int numberChanger(int n);


		static int num1 = 10;
		static int num2 = 10;
		

        public static int AddNum(int p)
        {
			num1 += p;
			Console.WriteLine("AddNum=>num1=" + num1);
			return num1;
        }
		public static int MultNum(int q)
		{
			num2 *= q;
			Console.WriteLine("MultNum=>num2=" + num2);
		return num2;
		}
		public static int GetNum()
	     {
			int num = num1 + num2;
			Console.WriteLine("GetNum=>num1={0} num2={1}", num1,num2);//40,250
			return num;
		   }

    public Day03_1()
	{

		//创建委托实例
		numberChanger nc1 = new numberChanger(AddNum);//注意这里传入的参数就是要调用的方法
		numberChanger nc2 = new numberChanger(MultNum);

		//使用委托对象调用方法
		nc1(25);
		Console.WriteLine("Value of num1= {0}",num1);//35
		//Console.WriteLine("Value1 of num {0}", GetNum());

		nc2(5);
		Console.WriteLine("Value2 of num2= {0}",num2);//
		//Console.WriteLine("Value2 of num {0}", GetNum());

		/*
		 * 委托的多播(组播):
		 * 委托对象可使用 "+" 运算符进行合并。
		 * 一个合并委托调用它所合并的两个委托。
		 * 只有相同类型的委托可被合并。
		 * "-" 运算符可用于从合并的委托中移除组件委托。
		 *  使用委托的这个有用的特点,您可以创建一个委托被调用时要调用的方法的调用列表。
		 */

		numberChanger nc;
		nc = nc1;
		Console.WriteLine("nc=>" + nc);//nc=nc1>Day03_1+numberChanger
		Console.WriteLine("nc1>{0}" ,nc1);//nc=nc1>Day03_1+numberChanger

		nc += nc2;
        Console.WriteLine("nc2>{0}", nc2);//nc+=nc2>Day03_1+numberChanger
        Console.WriteLine("nc+=nc2>{0}", nc);//nc+=nc2>Day03_1+numberChanger

		// 调用多播
		nc(5);
		Console.WriteLine("nc(5)=>" + GetNum());//290
		Console.WriteLine("num1:{0} num2:{1}",num1,num2);//40,250
	}


}


Mian方法

using System;


namespace ConsoleApp1
{
    class Program
    {


        static void Main(string[] args)
        {
            if (args is null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            Console.WriteLine("======Main开始运行=======");

            //导入外部类,并运行
            //Console.WriteLine("======Day01开始运行=======");
            //new Day01();

             //Console.WriteLine("======Day02开始运行=======");
             //new Day02();

            Console.WriteLine("======Day03_1开始运行=======");
            new Day03_1();

            //Console.WriteLine("======Day03_2开始运行=======");
            //new Day03_2();

            Console.WriteLine("======Main运行结束=======");

        }

    }
}

项目目录:

标签:Console,num1,委托,C#,nc,Day03,day03,WriteLine,num2
来源: https://www.cnblogs.com/Gray-pigeons/p/15626677.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有