2012-01-05 77 views
0

Visual Studio 11預覽錯誤?Visual Studio 11 CTP3 bug?

我試着編譯下面的例子,並收到意外的編譯錯誤。

實施例1:

async = System.Threading.Tasks.Task; 
partial = System.Threading.Tasks.Task; 

class C 
{ 

    async async async(async async) { } // ok 

    async partial async(async async) { } // error CS1002: ; expected 
} 

實施例2:

using System.Threading.Tasks; 

class C 
{ 
    delegate Task<dynamic> ady(dynamic i); 

    delegate Task adv(); 

    void f() 
    { 

     ady d11 = new ady(async j => await j); // ok 

     ady d12 = new ady((async j => await j)); // error CS0149: Method name expected 

     ady d21 = new ady(async (j) => await j); // ok 

     ady d22 = new ady((async (j) => await j)); // error CS0149: Method name expected 

     adv d31 = new adv(async() => { dynamic d = 0; await d; }); // ok 

     adv d32 = new adv((async() => { dynamic d = 0; await d; })); // error CS0149: Method name expected 

     adv d41 = new adv(async delegate { }); // ok 

     adv d42 = new adv((async delegate { })); // error CS0149: Method name expected 

     adv d61 = new adv(async delegate { }); // ok 

     adv d62 = new adv((async delegate { })); // error CS0149: Method name expected 

     ady d71 = new ady(async delegate(dynamic d) { return await d; }); // ok 

     ady d72 = new ady((async delegate(dynamic d) { return await d; })); // error CS0149: Method name expected 
    } 
} 
+4

報告在http://connect.microsoft.com發佈CTP(以及它發佈時的Beta版)。 – Richard 2012-01-05 08:40:19

回答

1

由於

var a = new Action((() => {})); 

不VS 2010編譯,我認爲實施例2不是一個錯誤。或者如果是這樣,它與async無關。

奇怪的是,ReSharper的並不將其標記爲錯誤和

Action a = (() => {}); 

確實工作。

+0

是的,VS2010不會編譯您的示例。但C#規範說,只有在parenthesized-expression中的namespace-or-type-name是非法的。 – 2012-01-07 18:58:14