您好,登录后才能下订单哦!
这篇文章将为大家详细讲解有关c#如何实现委托中异常的处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
基本委托写法: public delegate double Mathresult(double number);
public class MyMath
{
public static double mathNumber(double number)
{
return number*2;
}
}
使用:
Mathresult m=MyMath. mathNumber;
Console.Write(m(5));
输出结果:10
在委托中,系统提供了2种定义好的委托方法; Action和Func.
他们的区别是:Action不能有返回值,Func可以有返回值。
例如:用Func实现上面的方法。
Func<double,double> Mathresult = MyMath. mathNumber ;
Console.Write(m(5));
输出结果:10
用Action怎么实现呢??Action是不能有返回值的。只进不出。IN
Action<double> Mathresult = MyMath. mathNumber ;
相应的,mathNumber方法就不能有返回值,需要修改为:
public class MyMath
{
public static double mathNumber(double number)
{
Console.Write(number*2);
}
}
Mathresult (5);
输出结果:10
如果想要有多个委托的话,可以使用数组,同时委托也支持+= -+。
方法Account有2个方法,支出,和查询
class Account
{
decimal acc;
//查询
public public decimal Acc{get; private set;}
public Account(decimal money) { this.Acc=money; }
//支出
public static void Payin(decimal money)
{
if(Acc > = money)
{
Acc+money;
}
else
{
throw new Exception("可用金额不足!");
}
}
//查询余额
public static void Check(decimal money)
{
Console.write("您的余额"+Acc.Tostring());
}
}
给委托提供这两个方法:
一、
Action<double>[] action={Account.Payin,Account.Check};
foreach(Acount<double> a in action)
{
a(100);
a(200);
}
输出结果:
您的余额100
您的余额300
二、
Action<double> action=Account.Payin;
action+=Account.Check;
action(100); action(200);
或:
Action<double> action1=Account.Payin;
Action<double> action2=Account.Check;
Action<double> action3=action1+action2;
action(100); action(200);
判断异常:
Delegate[] de = action3.GetInvocationList();
foreach (Action<double> a in de)
{
try
{
action(100);
a(200);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
关于“c#如何实现委托中异常的处理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。