ものがたり(旧)

atsushieno.hatenablog.com に続く

Marekのmcs warning hackingはしばしばcscの一歩先を行っている。今日ネタになっていたのはこんな感じのコードだ:

public class Class1
{
   public virtual void Foo () {}
}

public class Class2 : Class1
{
   [Obsolete]
   public override void Foo () {}
}

.NET 1.1/2.0のcscではwarning対象とされないが、このようなObsoleteAttributeの使い方には問題がある(オーバーライドされた方のメンバーを参照した場合のみwarningが出るのでは一貫性に欠ける)。最近のmcsではちゃんとレポートしてくれるようだ。

追記: 次のバージョンのcscでは同様の警告を出すようになる、とMarekは書いている。たぶんMSのproduct feedbackの返事か何かでそう言われたのだろう。