2008-12-01から1日間の記事一覧

Equalsが拡張メソッドで実装されてたら

C#

public class Object { protected internal virtual bool Eq(Object o) { return this == o; } } public static class ObjectExtension { public static bool Equals(this Object self, Object other) { if (self == null && other == null) return true; if…

拡張メソッドでenumを拡張

C#

ってのも出来るのか。Javaのenumよりスマートじゃない気がするけど、これでJavaのenumっぽいこと + null安全が実現できる! public enum SampleEnum { Hoge, Piyo, Foo, Bar } public static class SampleEnumExtension { // enumのToStringは遅いので独自実…

拡張メソッドをどこに書くか

C#

拡張メソッドをクラスとかインターフェイスの拡張として使うなら別だけど、null安全なメソッド*1の提供を目的として使うなら、同じファイルに記述するのがいいんじゃなかろうか。 public sealed class Hoge { ... } public static class HogeExtension { ...…

インターフェイスへの(そこそこ)安全なメソッドの追加

C#

Effective Java第二版では、 一般的に言えば、publicのインタフェースに、そのインタフェースを使用しているすべてのプログラムを動かなくさせることなく、メソッドを追加することは不可能です。 とあるけど、C#では拡張メソッドを使用することでpublicのイ…