C# 无法使用';这';成员初始值设定项?

C# 无法使用';这';成员初始值设定项?,c#,lambda,anonymous-methods,C#,Lambda,Anonymous Methods,这合法吗?它是否包含隐藏的bug或缺陷?Visual studio不会给出任何错误或警告,但ReSharper会: /// <summary> /// immutable tuple for two /// </summary> public class Pair<TValue1, TValue2> : Singleton<TValue1> { public TValue2 Value2 { get; private set; }

这合法吗?它是否包含隐藏的bug或缺陷?Visual studio不会给出任何错误或警告,但ReSharper会:

/// <summary>
/// immutable tuple for two
/// </summary>
public class Pair<TValue1, TValue2> : Singleton<TValue1>
{
    public TValue2 Value2 { get; private set; }
    public Pair(TValue1 value1, TValue2 value2, Func<Pair<TValue1, TValue2>, String> toStringFunc)
        : this(value1, value2, () => toStringFunc(this)) { } //Red light

}2> : Singleton<TValue1>
//
///二元不变元组
/// 
公共类对:Singleton
{
public TValue2 Value2{get;private set;}
公共对(TValue1值1、TValue2值2、Func-ToString-Func)
:this(value1,value2,()=>toStringFunc(this)){}//红灯
}2> :单身

我很确定我听说这是一个编译器错误,在下一版本中修复。我正在启动我的4.0虚拟机,使用一个更简单的测试用例:

class Foo {
    public Foo() : this(delegate { this.Bar(); }) { }
    public Foo(Action foo) {}
    public void Bar() {}
}
在VS2008中工作,但在VS2010中:

错误1关键字“this”在当前上下文中不可用

这是C#3编译器中的一个bug,已在C#4中修复

编辑:

构造函数将永远循环,直到它弹出堆栈。这是因为它不断递归地调用自己。尝试将其拆分:

public Pair(TValue1 value1, TValue2 value2)
    : this(value1, value2, () => toStringFunc(this)) { }

public Pair(TValue1 value1, TValue2 value2, Func<Pair<TValue1, TValue2>, String> toStringFunc)
    { /* some actual logic */ }
公共对(TValue1值1,TValue2值2)
:this(value1,value2,()=>toStringFunc(this)){}
公共对(TValue1值1、TValue2值2、Func-ToString-Func)
{/*一些实际逻辑*/}

修复空/struct警告,我会原谅你-P