如何在C#中的构造函数声明中执行匿名方法?

时间:2015-03-05 14:17:24

标签: c#

我有以下基类:

public class Baseclass
{
    public Baseclass(string anyparam)
    {
    }
}

我想在子类的构造函数中执行lambda:

public class Subclass : Baseclass
{
    public Subclass() : base(delegate() 
    {
        string returnstring;
        // Do Something
        return returnstring; 
    })
    {

    }
}

我不想在此处浪费任何方法,而且我没有看到任何解决此问题的示例,而未将参数类型声明为func。我如何在C#中执行此操作?

2 个答案:

答案 0 :(得分:4)

您不必将参数声明为Func,您可以在线创建Func实例并调用它:

public class Subclass : Baseclass
{
    public Subclass()
        : base((new Func<string>(() =>
                                 {
                                     const string returnstring = "a";

                                     // Do Something

                                     return returnstring;
                                 })()))
    {

    }
}

它看起来很丑陋,可能会产生问题而我不推荐给你

答案 1 :(得分:2)

我认为你在这里做的最好就是重载你的基类构造函数:

public class Baseclass
{
    public Baseclass(string anyparam)
    {

    }
    public Baseclass(Func<string> f):this(f())
    {

    }
}

public class Subclass : Baseclass
{
    public Subclass()
        : base(()=> 
                {
                    string returnstring="foo";

                    // Do Something

                    return returnstring; 
                })
    {

    }
}