中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

同一名のメソッドを複数定義するときにあなたはどうやっていますか?

public void A(string a)
public void A(string a, string b)
public void A(string a, string b, string c)

ってオーバーロードする場合に以下の2パターンが考えられますが、どうやっていますか?

パターンA
public void A(string a)
{
 A(a, "b");
}
public void A(string a, string b)
{
 A(a, b, "c");
}
public void A(string a, string b, string c)
{
 処理
}
パターンB
public void A(string a)
{
 A(a, "b", "c");
}
public void A(string a, string b)
{
 A(a, b, "c");
}
public void A(string a, string b, string c)
{
 処理
}

お勧めはパターンAなんだけど、6段階とかあると6回メソッド呼び出しのオーバーヘッドがかかるので、あえてパターンBでもありって言う例ですね。

投稿日時 : 2004年12月30日 19:48

コメントを追加

# re: 同一名のメソッドを複数定義するときにあなたはどうやっていますか? 2004/12/30 21:06 菊池

JITでインライン展開される事もあるのでどっちでも変わらない結果になるかも。

# re: 同一名のメソッドを複数定義するときにあなたはどうやっていますか? 2004/12/30 21:22 石坂@日本ベーレー

自分でちょっと作って試してみましたが、パターンBの方が1メソッドコール分処理が少ないですね。リリースでビルドしても出力されるアセンブリでもちゃんとコードで意図されたとおりの動き方をします。
とは言っても数マイクロ秒の違いでしょうし、やっぱり好みですかね。好み的にはAの方かな。

# re: 同一名のメソッドを複数定義するときにあなたはどうやっていますか? 2004/12/31 1:59 入海

私もA派です。そっちの方がプログラムとしてすっきりしていますからね。

# re: 同一名のメソッドを複数定義するときにあなたはどうやっていますか? 2005/01/01 0:25 岡部@コア

私はパターンAなんですが、微妙に違います。

public void A(string a)
{
A_Private(a, "b", "c");
}

public void A(string a, string b)
{
A_Private(a, b, "c");
}

public void A(string a, string b, string c)
{
A_Private(a, b, c);
}

private void A_Private(string a, string b, string c)
{
処理;
}

微妙に無駄?

# re: 同一名のメソッドを複数定義するときにあなたはどうやっていますか? 2005/01/01 2:04 岡部@コア

↑間違い。私はパターンBです。

遅ればせながら、あけましておめでとうございます。
本年もどうぞよろしくお願いします。

タイトル
名前
URL
コメント