【问题标题】:Dictionaries and Lambdas fun字典和 Lambda 很有趣
【发布时间】:2009-04-08 15:15:05
【问题描述】:

为什么会编译:

public Dictionary<ValueLineType, 
                  Func<HtmlHelper, 
                       string, 
                       object, 
                       Type, 
                       string>> constructor = 
       new Dictionary<ValueLineType, 
                      Func<HtmlHelper, 
                           string, 
                           object, 
                           Type, 
                           string>>();

但不是在 Func(布尔值)中有一个额外参数的另一个:

public Dictionary<ValueLineType, 
                  Func<HtmlHelper, 
                       string, 
                       object, 
                       Type, 
                       bool,  
                       string>> constructor = 
       new Dictionary<ValueLineType, 
                      Func<HtmlHelper, 
                           string, 
                           object, 
                           Type, 
                           bool, 
                           string>>();

要么我失明了,要么我今天要学习其他东西:D

【问题讨论】:

标签: c# dictionary lambda


【解决方案1】:

没有Func&lt;T1,T2,T3,T4,T5,TResult&gt; 这样的东西。它最多只有 4 个参数(即 5 个 type 参数,其中一个用于返回值):

Func<T>
Func<T1, TResult>
Func<T1, T2, TResult>
Func<T1, T2, T3, TResult>
Func<T1, T2, T3, T4, TResult>
SpinalTap<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>

当然,您可以声明自己的:

public delegate TResult Func<T1, T2, T3, T4, T5, TResult>
    (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);

但是,那时我会非常仔细地考虑是否可以将其中一些参数封装在一起。它们完全不相关吗?

【讨论】:

  • 但是你没有理由不能添加你自己的,因为它们只是具有泛型的代表。
  • @Me:添加您自己的参数,超过 4 个。
  • 我喜欢 Spinal Tap 参考 :) + 1
【解决方案2】:

仅供参考,.NET 库的下一个版本将包括四个以上参数的 Func 和 Action 泛型类型。

【讨论】:

    【解决方案3】:

    名为 Func 的框架定义了不同的类,它们接受 1 到 5 个参数。您需要定义自己的需要 6 的类。

    【讨论】:

    • Func 只定义了 4 个参数 - 但 5 个 type 参数。
    【解决方案4】:

    Func only 需要 4 个参数和一个 TResult

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2021-08-29
      • 2019-10-24
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多