gpt4 book ai didi

c# - 有什么可以用 'delegate' 做但不能用 'Action' 或 'Func' 做的事情吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:36 24 4
gpt4 key购买 nike

提前为新手的问题道歉(因为我是 C# 中的一员):

在研究委托(delegate)时,在我看来 Action 的组合和 Func涵盖了 delegate 的全部“功能”关键字。

换句话说,您无法使用 delegate 执行任何操作关键字,但不能使用 ActionFunc .

我已经尝试了以下示例(效果很好):

Func<int,int,int,int> func = (x,y,z) => (x<<9)|(y<<6)|(z<<3);
Action<int,int,int> action = (x,y,z) => Console.WriteLine(x|y|z);

我错了吗?如果是,请您提供一个反例?

最佳答案

如果你想拥有:

  1. 您的方法的参数超过 16 个。

  2. 任何参数都是refout参数。

  3. params 参数。

  4. 任何参数的可选参数。

  5. 对任何通用参数的约束。 (确保参数是扩展类型的任何类型,它具有无参数构造函数,它是值/引用类型等)

  6. 不安全方法签名中使用的类型,例如指针作为参数。

  7. 有一个不是逆变的参数,或者不是协变的返回类型。 FuncAction 都尽可能应用变体,因此如果您的委托(delegate)变体很重要,您将需要自己的变体。

关于c# - 有什么可以用 'delegate' 做但不能用 'Action' 或 'Func' 做的事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com