2012-01-05 131 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