我有以下基类:
public class Baseclass
{
public Baseclass(string anyparam)
{
}
}
我想在子类的构造函数中执行lambda:
public class Subclass : Baseclass
{
public Subclass() : base(delegate()
{
string returnstring;
// Do Something
return returnstring;
})
{
}
}
我不想在此处浪费任何方法,而且我没有看到任何解决此问题的示例,而未将参数类型声明为func
。我如何在C#中执行此操作?
答案 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;
})
{
}
}