我的Beta2 Framework 版本是v1.0.2914,VB.NET的IL里已经没有nop指令了。
  vbc test.vbs
  vbc /optimize+ test.vbs
  结果相同
我相信这只是Beta阶段的一点困难而已,M$最终能够从VB.NET中去掉的。至于VB.NET和C#性能的比较,参见:
http://www.csdn.net/develop/article%5C11%5C11483.shtm
和下面我的评论。:)

解决方案 »

  1.   

    重要的是VBC的版本啦:
    Microsoft (R) Visual Basic.NET Compiler version 7.00.9254
    for Microsoft (R) .NET CLR version 1.00.2914.16
      

  2.   

    这是我今天在 RC4 版本上到的IL输出,
    .method public static void  Main() cil managed
    {
      .entrypoint
      .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) 
      // Code size       14 (0xe)
      .maxstack  8
      IL_0000:  nop
      IL_0001:  ldstr      "This is VB"
      IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
      IL_000b:  nop
      IL_000c:  nop
      IL_000d:  ret
    } // end of method Module1::Mainnop依然存在。
    VS.NET 版本是7.0.9447
    Framework的版本是1.0.3617
    怎么获得CLR,和Compiler的版本?
      

  3.   

    这么简单的语法,多一个nop无关紧要的,这并不是执行时的本机代码。
    经过我的测试,If语句,While语句VB实现得比C#好,Try语句,Select语句C#实现得比VB好。总的来说无所谓啦!
      

  4.   

    最新结果(RC5):大家的担心都是多余的,请看
    Visual Basic.method public static void  Main() cil managed
    {
      .entrypoint
      .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) 
      // Code size       11 (0xb)
      .maxstack  8
      IL_0000:  ldstr      "This is VB.net"
      IL_0005:  call       void [mscorlib]System.Console::WriteLine(string)
      IL_000a:  ret
    } // end of method CMain::MainVisual C#.method public hidebysig static void  Main() cil managed
    {
      .entrypoint
      .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) 
      // Code size       11 (0xb)
      .maxstack  1
      IL_0000:  ldstr      "This is C#"
      IL_0005:  call       void [mscorlib]System.Console::WriteLine(string)
      IL_000a:  ret
    } // end of method Class1::Main完全一样!!另外一个值得注意的问题是VB会自动添加STAThread属性优化,C#却不会。这是源代码
    Public Class CMain
        Public Shared Sub Main()
            'Output something
            Console.WriteLine("This is VB.net")
        End Sub
    End Classclass Class1
    {
    [STAThread]
    public static void Main()
    {
    Console.WriteLine("This is C#");
    }
    }
      

  5.   

    这主要是VB.NET编译器的问题,在cmd下打命令vbc可以察看其版本。