2012年10月16日 星期二

C# 資料型態 bool 和 Boolean 的差異

第一次接觸到C#就對資料型態產生了一些疑惑

首先就是 bool 和 Boolean 之間的差異

查了一下  MSDN 的文獻
http://msdn.microsoft.com/en-us/library/c8f5xwh7(v=vs.71).aspx

The bool keyword is an alias of System.Boolean

也就是 bool 就只是 System.Boolean 的別名,是一樣的東西。

但是也有些人說者編譯器會將 bool 轉換成 Boolean,因此執行效率上會有差異?


寫了以下兩個程式來驗證看看:

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool x = true;
            Console.WriteLine(x);
            Console.Read();
        }
    }
}

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Boolean x = true;
            Console.WriteLine(x);
            Console.Read();
        }
    }
}


然後我們用 IL DASM 來觀看其代碼,會發現兩者產生的程式碼都是一樣的,因此不存在效率差異的問題。

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // 程式碼大小       17 (0x11)
  .maxstack  1
  .locals init ([0] bool x)
  IL_0000:  nop
  IL_0001:  ldc.i4.1
  IL_0002:  stloc.0
  IL_0003:  ldloc.0
  IL_0004:  call       void [mscorlib]System.Console::WriteLine(bool)
  IL_0009:  nop
  IL_000a:  call       int32 [mscorlib]System.Console::Read()
  IL_000f:  pop
  IL_0010:  ret
} // end of method Program::Main


沒有留言:

張貼留言