小标
2018-11-14
来源 :
阅读 1434
评论 0
摘要:本文主要向大家介绍了C#编程之C#委托,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
本文主要向大家介绍了C#编程之C#委托,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
using System;
using static System.Console;
//委托 降低耦合
//如果一个函数的参数是一个函数
//就可以定义一个委托
namespace ConsoleApp
{
class Program
{
//委托
//可以在类的内部、外部,名字空间 定义委托
//相当于一个函数类型
public delegate void WtiteAString(int i);
public static void fun(int i)
{
WriteLine(i);
}
public static void fun1()
{ }
static void Main(string[] args)
{
//复制会重新分配一个方法
WtiteAString write = fun;
write = new WtiteAString(fun);
write(1);
//Action
Action
op1(2);
Action d = fun1;
//Func
//单参,表示返回类型,多参前面表示方法的参数,最后一个表示返回类型
Func
//多播委托,使用+ += - -=
//其调用的顺序并未正式定义,所以要避免写依赖顺序调用方法的代码
op1 += fun;
//如果委托调用的一个方法引发了异常,委托迭代就会停止,不再调用其他方法
//为避免这种情况,应自己迭代方法列表
Action d1 = fun1;
d1 += fun1;
Delegate[] delegates = d1.GetInvocationList();
foreach (Action d2 in delegates)
{
try
{
d2();
}
catch (Exception)
{
WriteLine("Exception caught");
}
}
//匿名方法 委托一个现写的函数
//匿名方法不能使用跳转语句(break goto continue)跳到该匿名方法外部
//不能访问外部ref、out参数,但可以使用其他的外部变量
string mid = ", middle part,";
Func
{
param += mid;
param += " and this was added to the string.";
return param;
};
WriteLine(anonDel("start of string"));
//lambda表达式
Func
s2 => $"change uppercase {s2.ToUpper()}"; //s2为参数
WriteLine(oneParam("test"));
//多个参数
Func
(x, y) => x * y;
WriteLine(twoParams(2, 3));
}
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号