たこぜりー研究室

大腸菌DNAは4.64Mbp。酵母は13Mbpで、ヒトは3Gbp

スポンサーサイト

#
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XML コメントと using の整理

#476
今頃気づいたが、using の整理は XML コメントにも有効なのね。

たとえば、

using System.Security;
...
/// <exception cref="SecurityException"></exception>

で、コード中には SecurityException が無くても、「using System.Security;」は「削除および並び替え」で削除されない。
スポンサーサイト

ポリモーフィズム #3

#475
前回の続き。
おまけ。メンバの明示的な実装をつけた場合。
using System;

namespace ConsoleApp
{
  interface IA
  {
    string Who();
  }

  class B : IA
  {
    public string Who() { return "B"; }
  }

  class C : B, IA
  {
    public new string Who() { return "C"; }

    string IA.Who() { return "C (explicit)"; }
  }

  class Program
  {
    static void Main()
    {
      C c = new C();

      CallC(c); CallB(c); CallA(c);
    }

    static void CallC(C c)
    {
      Console.WriteLine("そのまま : " + c.Who());
    }

    static void CallB(B b)
    {
      Console.WriteLine("B に変換 : " + b.Who());
    }

    static void CallA(IA a)
    {
      Console.WriteLine("IA に変換 : " + a.Who());
    }
  }
}

結果 :
そのまま : C
B に変換 : B
IA に変換 : C (explicit)

やはり完全に継承できるようにするには、仮想メンバにするしかないのか。

ポリモーフィズム #2

#474
前回の続き。
using System;

namespace ConsoleApp
{
  interface IA
  {
    string Who();
  }

  class B : IA
  {
    public string Who() { return "B"; }
  }

  class C : B, IA
  {
    public new string Who() { return "C"; }
  }

  class Program
  {
    static void Main()
    {
      C c = new C();

      CallC(c); CallB(c); CallA(c);
    }

    static void CallC(C c)
    {
      Console.WriteLine("そのまま : " + c.Who());
    }

    static void CallB(B b)
    {
      Console.WriteLine("B に変換 : " + b.Who());
    }

    static void CallA(IA a)
    {
      Console.WriteLine("IA に変換 : " + a.Who());
    }
  }
}

前回との違いは派生クラスでもインターフェイスの実装を宣言しているところ。つまり、インターフェイスの明示的な再実装。[続きを読む]

ポリモーフィズム #1

#473
[.NET 3.5 with C#]
ちょっと実験。C# 言語仕様の 13.4.5 Interface implementation inheritance を参照。
using System;

namespace ConsoleApp
{
  interface IA
  {
    string Who();
  }

  class B : IA
  {
    public string Who() { return "B"; }
  }

  class C : B
  {
    public new string Who() { return "C"; }
  }

  class Program
  {
    static void Main()
    {
      C c = new C();

      CallC(c); CallB(c); CallA(c);
    }

    static void CallC(C c)
    {
      Console.WriteLine("そのまま : " + c.Who());
    }

    static void CallB(B b)
    {
      Console.WriteLine("B に変換 : " + b.Who());
    }

    static void CallA(IA a)
    {
      Console.WriteLine("IA に変換 : " + a.Who());
    }
  }
}
[続きを読む]

過去の通知アイコンを削除する

#472
通知領域をカスタマイズするダイアログにある過去の項目をリセットしたいときは、XP では

HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\Explorer\TrayNotify

だったんだけども、Vista ではこの KB によれば

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify

にあるようだ。メモ。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。