【问题标题】:C# equivalent of C++ mem_fun?C# 相当于 C++ mem_fun?
【发布时间】:2008-12-09 14:44:53
【问题描述】:

我想在 C# 中执行以下操作:

    class Container {
        //...
        public void ForEach(Action method) {
            foreach (MyClass myObj in sequence) myObj.method();
        }
    }

    //...
    containerObj.ForEach(MyClass.Method);

在 C++ 中,我会使用 std::mem_fun 之类的东西。我将如何在 C# 中做到这一点?

【问题讨论】:

    标签: c# methods delegates mem-fun


    【解决方案1】:

    这在 C# 3.0 中应该可以工作:

    class Container 
    {        
    //...        
    public void ForEach(Action<MyObj> method) 
    {            
        foreach (MyClass myObj in sequence) method(myObj);        
    }    
    }   
    
    //...    containerObj.ForEach( myobj => myObj.Method() );
    

    【讨论】:

    • 谢谢,这就行了。 (不幸的是,它仍然会产生垃圾,这就是为什么我不只是返回一个枚举器,但这是另一回事。)
    【解决方案2】:

    假设:

        public void ForEach(Action method) {
            foreach (MyClass myObj in sequence) method(myObj);
    

    对你没有好处,那么我认为你陷入了反思。

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2011-08-27
      相关资源
      最近更新 更多