2009-10-02 C#(.NET)のVirtualについて考えてみた。 昨日C++のVirtualについて考えたので今日はC#のVirtualについて考えてみた。 C#は多重継承できないのでC++のような利点は得られない。というか得る必要がない。 んじゃあC#(.NET)Virtualが何の意味をもつのかというと遅延バインディングになる模様。 virtual無し コンパイル時の型情報からメソッドのアドレスを取得 virtual有り オブジェクトヘッダからメソッドテーブルのアドレスを取得して、メソッドのアドレスを取得。 つまりvirtual無しの方が実行は早い。 ちなみにC#はデフォはvirtual有り。