C#func <>应用于左侧的对象

藻类

我试图找出是否有一种方法可以将func(或类似方法)应用于左侧对象。前任。:

member1.MyFunction()

这是用法的简化上下文。我们得到了ClassA,其中包含ClassB的列表和一种汇总classB元素的方法。并且classB具有两个double类型的属性memberX和memberY。该函数将用于选择我们要汇总的ClassB成员。

我写的行中有一个错误

theSum += TheList[i].TheFunction();

错误是:

CS1061 C#不包含的定义,找不到可以接受类型为第一个参数的扩展方法(是否缺少using指令或程序集引用?)

有谁知道解决方法?我的研究无法使我找到适用于泛型函数左侧的任何内容。

public class ClassA
{
    public List<ClassB> TheList;
    public ClassA()
    {
        ClassB m1 = new ClassB(1, 2);
        ClassB m2 = new ClassB(1, 2);
        ClassB m3 = new ClassB(1, 2);
        TheList= new List<ClassB>() { m1, m2, m3 };
    }
    private double CalculateSum(Func<double> TheFunction)
    {
        double theSum = 0;
        for (int i = 0; i < TheList.Count(); i++)
        {
            theSum += TheList[i].TheFunction();
            // I'd like to use the previous line instead of having to write
            // a function for both of the following.
            // theSum += TheList[i].GetMember1();
            // theSum += TheList[i].GetMember2();
        }
        return theSum;
    }
}
public class ClassB
{
    private double memberX;
    private double memberY;
    public ClassB(double x, double y)
    {
        memberX = x;
        memberY = y;
    }
       
    public double GetMember1() { return memberX; }
    public double GetMember2() { return memberY; }
}
康奈尔·奥唐奈

您可以尝试这样的事情:

private double calculateSum(Func<ClassB, double> aFunction)
{
    double theSum = 0;
    for (int i = 0; i < aList.Count(); i++)
    {
        theSum += aFunction(aList[i]);
    }

    return theSum;
}

更新

如果您真的想将func应用于对象的左侧,则可以定义一个扩展方法。

public static class ClassBExtensions
{
    public static double Sum(this ClassB arg, Func<ClassB, double> func)
    {
        return func(arg);
    }
}

然后这样称呼它

Func<ClassB, double> func = null; // define your func here
for (int i = 0; i < aList.Count(); i++)
    {
        theSum += aList[i].Sum(func);
     }
 return theSum;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#Func <>委托参数转换错误

来自分类Dev

C#Func <T,TResult>参数验证

来自分类Dev

C#Func <>委托参数转换错误

来自分类Dev

C#Func:在块中访问局部变量

来自分类Dev

C ++:应用于矢量的STL算法也适用于其他容器对象吗?

来自分类Dev

将一个动作应用于多个对象C#

来自分类常见问题

x没有适用于'tbl_vars'的适用方法应用于类“ c('double','numeric')”的对象

来自分类Dev

团结返回错误“没有适用于'unite_'的适用方法”应用于类“ c('double','numeric')”的对象

来自分类Dev

x没有适用于“ tbl_vars”的适用方法应用于类“ c('double','numeric')”的对象

来自分类Dev

UseMethod("predict") 中的错误:没有适用于应用于类 "c('double', 'numeric') 的对象的 'predict' 的方法

来自分类Dev

C-应用于指针的索引

来自分类Dev

mutate函数中的错误消息:没有适用于'mutate_'的适用方法应用于类“ c('double','numeric')”的对象

来自分类Dev

将orderby应用于C#LINQ内部联接

来自分类Dev

如何使const应用于共享指针的C ++类成员

来自分类Dev

C ++将标准库算法应用于函数

来自分类Dev

C将FFT应用于WAV文件数据

来自分类Dev

将函数应用于连续元素的C ++算法

来自分类Dev

将OpenMP应用于C ++中的特定嵌套循环

来自分类Dev

将c ++ r值引用应用于函数指针

来自分类Dev

如何使const应用于共享指针的C ++类成员

来自分类Dev

C#将颜色应用于特定单词

来自分类Dev

将C ++和交换/复制应用于Point结构

来自分类Dev

以自然(而非反向)顺序将func应用于std :: tuple中的元素

来自分类Dev

在Lambda表达式中使用Func <T>并将LinQ应用于实体

来自分类Dev

Scalaz monad变压器。将f1:A => G [B],f2:B => G [C]函数应用于F [G [A]]对象

来自分类Dev

将转换应用于对象

来自分类Dev

将转换应用于对象

来自分类Dev

表达式<Func <-运算符'||' 不能应用于'lambda expression'和'lambda expression'类型的操作数

来自分类Dev

如何将 func for textfield 下划线代码应用于所有文本字段

Related 相关文章

  1. 1

    C#Func <>委托参数转换错误

  2. 2

    C#Func <T,TResult>参数验证

  3. 3

    C#Func <>委托参数转换错误

  4. 4

    C#Func:在块中访问局部变量

  5. 5

    C ++:应用于矢量的STL算法也适用于其他容器对象吗?

  6. 6

    将一个动作应用于多个对象C#

  7. 7

    x没有适用于'tbl_vars'的适用方法应用于类“ c('double','numeric')”的对象

  8. 8

    团结返回错误“没有适用于'unite_'的适用方法”应用于类“ c('double','numeric')”的对象

  9. 9

    x没有适用于“ tbl_vars”的适用方法应用于类“ c('double','numeric')”的对象

  10. 10

    UseMethod("predict") 中的错误:没有适用于应用于类 "c('double', 'numeric') 的对象的 'predict' 的方法

  11. 11

    C-应用于指针的索引

  12. 12

    mutate函数中的错误消息:没有适用于'mutate_'的适用方法应用于类“ c('double','numeric')”的对象

  13. 13

    将orderby应用于C#LINQ内部联接

  14. 14

    如何使const应用于共享指针的C ++类成员

  15. 15

    C ++将标准库算法应用于函数

  16. 16

    C将FFT应用于WAV文件数据

  17. 17

    将函数应用于连续元素的C ++算法

  18. 18

    将OpenMP应用于C ++中的特定嵌套循环

  19. 19

    将c ++ r值引用应用于函数指针

  20. 20

    如何使const应用于共享指针的C ++类成员

  21. 21

    C#将颜色应用于特定单词

  22. 22

    将C ++和交换/复制应用于Point结构

  23. 23

    以自然(而非反向)顺序将func应用于std :: tuple中的元素

  24. 24

    在Lambda表达式中使用Func <T>并将LinQ应用于实体

  25. 25

    Scalaz monad变压器。将f1:A => G [B],f2:B => G [C]函数应用于F [G [A]]对象

  26. 26

    将转换应用于对象

  27. 27

    将转换应用于对象

  28. 28

    表达式<Func <-运算符'||' 不能应用于'lambda expression'和'lambda expression'类型的操作数

  29. 29

    如何将 func for textfield 下划线代码应用于所有文本字段

热门标签

归档