c# - 如何调用所有事件处理程序订阅者并获得他们的结果?

标签 c# .net oop events behavior

我有这个片段:

public static void Main()
{
    OnComparaison += LePlusPetit;
    OnComparaison += LePlusGrand;
    Console.WriteLine(OnComparaison(0, 9));
    Console.ReadKey();
}

public static int LePlusPetit(object obj1, object obj2)
{
    int int1 = (int)obj1;
    int int2 = (int)obj2;
    return (int1 < int2) ? int1 : int2;
}

public static int LePlusGrand(object obj1, object obj2)
{
    int int1 = (int)obj1;
    int int2 = (int)obj2;
    return (int1 > int2) ? int1 : int2;
}

public delegate int Comparer(object obj1, object obj2);
public static event Comparer OnComparaison;

我的结果总是 9。所以我需要知道:

  1. 是否只执行最后订阅的事件处理程序而不是所有订阅者?
  2. 如果是这样,我如何修改代码,使所有订阅的事件处理程序在事件触发时执行?

最佳答案

Does only the last subscribed event handler is executed not all the subscribers?

不是,都执行了但是结果是最后执行的方法的返回值。

关于c# - 如何调用所有事件处理程序订阅者并获得他们的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989901/

相关文章:

c# - 如何使用 AWS Cognito 保护 .Net Core Web API 应用程序

c# - 我如何生成 Woocommerce REST Api 的 Swagger json 文件?

c# - 为每个带有 Rx 的事件生成带有延迟的第二个后续事件

.net - 如何使用 angular $http 服务从返回的 JSON 对象中获取 Odata Next Link

java - 使用数组从文本文件创建对象(无ArrayList),运行时出现InputMismatchException

c# - 不明显的类型转换 : x = (x + xstep < xmax ? x + xstep : xmax)

.net - sqlserver 的 Entity Framework 日期/时间转换

c++ - 从成员复制方法

c++ - 派生类中不同方法的多态性

c# - 是否可以从 C# 中的数据表中删除重复值?