Cannot use 'this' in member initializer?

anonymous-methods, c#, lambda

Solution

I'm pretty sure I've heard that this is a compiler bug, fixed in the next release. I'm just firing up my 4.0 VM, with a simpler test-case:

class Foo {
    public Foo() : this(delegate { this.Bar(); }) { }
    public Foo(Action foo) {}
    public void Bar() {}
}

works in VS2008, but in VS2010:

Error 1 Keyword 'this' is not available in the current context

Problem

Is this legal? Does it contain a hidden bug or flaw? Visual studio does not give any errors or warnings but ReSharper does: ``` /// <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> ```

Original source

Related problems