C# でクラス名と同名のメソッドを定義する
通常、 C# では、クラス名と同名のメソッドは定義する事が出来ません。(コンストラクタとかぶってしまう為)
VB ではこれが出来たりするんですが(コンストラクタを New と云う名のメソッドとして定義するから)、まぁ言語による制限だと諦めていました。(実際、クラス名とメソッド名を同じにしなきゃいけないシチュエーションなんてほとんどないですし)
ただ、さっきふと「 C# でも拡張メソッドを使えば定義できるんじゃね?」と思いたったので、早速やってみました。
namespace Jp.Mkns.Practice { public static class FooExtention { public static void Foo(this Foo obj) { System.Console.WriteLine("Foo.Foo()"); } } public class Foo { public Foo() { System.Console.WriteLine("Foo@ctor"); } static void Main() { var obj = new Foo(); obj.Foo(); } } }
実行結果。
Foo@ctor Foo.Foo()