c# 多播委托的 异常处理 如果有返回值 只返回最后一个返回值

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            Func<string> f0 = f1;
            f0 += f12;
            f0 += f2;
            f0 += f3;
            f0 += f4;
            Delegate[] dels = f0.GetInvocationList();

            foreach (Func<string> item in dels)
            {

                try
                {
                    Console.WriteLine(item());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }

            }

            Console.ReadKey();

        }

        static string f1()
        {

            return "1";

        }
        static string f2()
        {

            return "2";

        }
        static string f3()
        {

            return "4";

        }
        static string f4()
        {

            return "5";

        }
        static string f12()
        {
            int b = 1;
            b = b - 1;
            int i = 1 / b;
            return "1ff";

        }

    }
}
时间: 2024-08-10 21:30:36

c# 多播委托的 异常处理 如果有返回值 只返回最后一个返回值的相关文章

&lt;转&gt;SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY

MSDN对官方解释:这三个函数都返回最后生成的标识值. 但是,上述每个函数中定义的“最后”的作用域和会话有所不同. 1.IDENT_CURRENT 返回为某个会话和当前作用域中的指定表生成的最新标识值. 如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值. 2.@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值. 如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL. 如果插

委托和多播委托

刚刚学习了委托的内容,先来说一下自己对委托的理解,权当是复习吧: 委托可以定义在类里面,也可以定义在类外面,如果定义在类里面就只能被这个类调用,不论声明它是public 还是private.如果定义在类外面就能被所有类调用.如果程序是多线程的,委托方法希望能在UI层调用,那么可以在命名空间下定义. //委托的声明 delegate关键字,这个委托只能代表返回值是空.参数是一个string类型的一个方法public delegate void GreetingDelegate(string nam

C#多播委托

概述 在上一篇文章中,笔者就个人理解的委托做了简单的分享,本篇文章主要来说说多播委托.多播委托即每个委托可以包含多个方法. 理解多播委托 多播委托可以保护多个方法,但是在使用的时候需要注意:委托的签名必须是返回void,否则只能调用最后一个方法的得到结果.多播委托派生自System.MulticastDelegate类,System.MulticastDelegate类又派生自System.Delegate.System.MulticastDelegate的其他成员可以允许把多个方法调用链接为一

委托、Lambda表达式、事件系列04,委托链是怎样形成的, 多播委托

在"委托.Lambda表达式.事件系列01,委托是什么,委托的基本用法,委托的Method和Target属性"中,反编译委托,发现委托都是多播委托. 既然委托是多播委托,我们可以通过"+="把多个方法赋给委托变量,这样就形成了一个委托链, 它是怎样形成的?来看下面的例子: namespace ConsoleApplication3 { internal delegate void MySayDel(string msg); class Program { stati

委托三------------多播委托与匿名方法

============================================多播委托 -------------------------------------主程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 {     class Pr

多播委托

首先定义两个委托和几个方法,后面会用到. 委托: 1 public delegate void M1Delegate(); 2 3 public delegate int M2Delegate(int x,int y); 方法: 1 static int A1(int x,int y) 2 { 3 return x + y; 4 } 5 6 static int A2(int x, int y) 7 { 8 return x + y; 9 } 10 11 static int A3(int x,

【C#进阶】多播委托和委托数组像是一回事~

这个MathOperation类有三静态方法,参数都是double,并且没有返回值,考虑用Action<>() 这种预定义的委托哦 class MathOperations { public static void MultiplyByTwo(double value) { Console.WriteLine( "2* {0} = {1}",value,value * 2); } public static void Square(double value) { Conso

C#学习总结 事件(一)深入多播委托

好久没写文章了,之前说要总结一下事件这个概念,今天趁着工作闲暇,谈谈我对C#事件事件的理解,如果有什么不对的地方,望各位大神指点. 真正的理解事件,还是要很好的理解委托,不然你永远不会明白很多教科书上的一句话:事件是一个特殊的委托,今天我们就来探寻一下:为什么说事件是一个特殊的委托,之前我谈论了委托的一些相关基础知识,其实还有一些关于委托更深层次的东西没有说,那么在今天谈事件这个知识之前还是继续从委托说起: 不知道有没有人了解C语言的函数指针这个概念,使用函数指针来创建回调函数,使用回调可以把函

C#多播委托/多播代理

定义:委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针.理解委托的一种方式可以把委托的作用当作是给方法签名指定名称.委托的定义类似于方法的定义,但没有方法体,定义的委托名前要加上关键字delegate. 因为定义委托基本上是定义一个新类,所以可以在定义类的任何地方定义委托,既可以在另一个类的内部定义委托,也可以在所有类的外部定义委托,还可以在命名空间中把委托定义为顶层对象.根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public.private和protected