C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: プロパティのオーバロード


(過去ログ 30 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■14494 / inTopicNo.1)  プロパティのオーバロード
  
□投稿者/ ayumu (1回)-(2008/02/20(Wed) 00:54:21)

分類:[C#] 


C#でのプロパティのオーバロードでの質問ですが、
引数で
int a int b
int a string b
string a int b
string a string b
などがある場合四つ引数のみ違うものをかかないといけないのでしょうか?
もっと効率のいい書き方はありますか?
引用返信 編集キー/
■14496 / inTopicNo.2)  Re[1]: プロパティのオーバロード
□投稿者/ かさのば (2回)-(2008/02/20(Wed) 01:42:09)
何をもって「効率がいい」とすればいいのか分かりませんが、必要なら書かなきゃいけないんじゃないでしょうか。
「引数のみ違うものをかかないといけない」のではなく、「引数が異なる同一名のものが書ける」のがオーバーロードなわけで。

それよりも、そもそも本当に同名プロパティのオーバーロードにする必要があるのか、の方が重要かなとか言ってみたり。
引用返信 編集キー/
■14497 / inTopicNo.3)  Re[1]: プロパティのオーバロード
□投稿者/ Jitta on the way (33回)-(2008/02/20(Wed) 07:21:05)
No14494 (ayumu さん) に返信
>
> C#でのプロパティのオーバロードでの質問ですが、
> 引数で
> int a int b
> int a string b
> string a int b
> string a string b
> などがある場合四つ引数のみ違うものをかかないといけないのでしょうか?
> もっと効率のいい書き方はありますか?

「呼び出し方が違うだけで中身は同じメソッドを書かなければならないのか」と、解釈しました。
引数を変換して、どれか一つを呼び出すようにすればいいと思います。
引用返信 編集キー/
■14503 / inTopicNo.4)  Re[1]: プロパティのオーバロード
□投稿者/ ghost_shell (7回)-(2008/02/20(Wed) 11:33:10)
ghost_shell さんの Web サイト
No14494 (ayumu さん) に返信
>
> C#でのプロパティのオーバロードでの質問ですが、
> 引数で
> int a int b
> int a string b
> string a int b
> string a string b
> などがある場合四つ引数のみ違うものをかかないといけないのでしょうか?
> もっと効率のいい書き方はありますか?

存じているかもしれませんが・・・
・メインとなる(あるいは引数が求めやすい)プロパティを実装する。残り3つは引数を加工してそれを呼び出す。
・プロパティの値を返すメソッドを作成する。4つのプロパティはそれを呼び出す。

メソッド、プロパティのオーバーロード(処理内容が全く同じ)は利用者の利便性のために行うのですよね。
コード次第では改善の余地があるかもしれませんが、実装1つで入口が4つであればそれ以上に簡潔なコードは期待できないと思います。
引用返信 編集キー/
■14518 / inTopicNo.5)  Re[1]: プロパティのオーバロード
□投稿者/ myugaru (12回)-(2008/02/20(Wed) 16:45:55)
myugaru さんの Web サイト
2008/02/20(Wed) 16:51:06 編集(投稿者)
2008/02/20(Wed) 16:47:39 編集(投稿者)

No14494 (ayumu さん) に返信
>
> C#でのプロパティのオーバロードでの質問ですが、
> 引数で
> int a int b
> int a string b
> string a int b
> string a string b
> などがある場合四つ引数のみ違うものをかかないといけないのでしょうか?
> もっと効率のいい書き方はありますか?

引数の数が同じで型による違いならGenericを積極的に使うとよろしいのではないでしょうか?

func<TA,TB>(TA a TB b)

呼び出し側ではきっちりと

func<int,int>(10,20)

というふうにどのオーバーロードを呼び出すのか明示することで呼び出しのあいまいさが軽減されます。
効率を求めているというのは文字を打つ効率でしょうか?私は文字を打ち込む手間よりデバッグの手間のほうがずっとずっと手間に思えます。
#C#3.0からは字を打つ手間が手間と思える方にはfunc(10,20)と書いても引数の型を自動的に解釈してくれる機構も追加されたようですがね。

引用返信 編集キー/
■14520 / inTopicNo.6)  Re[2]: プロパティのオーバロード
□投稿者/ ghost_shell (9回)-(2008/02/20(Wed) 17:35:13)
ghost_shell さんの Web サイト
意見を付け加えておきます。



質問が単なる例示だったら(2種類の型で表される同類のオブジェクトが2個必要なので4個になった、のではなかったら)スルーして構わないのですが、

> int a int b
> string a string b

に対して

> int a string b
> string a int b

が本当に必要か、また利用価値があるかを考えてみてはいかがでしょう。



質問通りの状況ならば1種類の型として扱えるようにすると楽かもしれません。
#4個の例では現実的ではないですが、コンテナクラスを作ってintとstringによる違いを吸収するとか。

引用返信 編集キー/
■14521 / inTopicNo.7)  Re[1]: プロパティのオーバロード
□投稿者/ シャノン (298回)-(2008/02/20(Wed) 18:05:29)
No14494 (ayumu さん) に返信
>
> C#でのプロパティのオーバロードでの質問ですが、
> 引数で
> int a int b
> int a string b
> string a int b
> string a string b
> などがある場合四つ引数のみ違うものをかかないといけないのでしょうか?
> もっと効率のいい書き方はありますか?

プロパティのオーバーロードってできたっけ? と思ってしまいました。インデクサが違うんですね。
で、想像ですが、2次元コレクションで、要素にインデックスでもキーでもアクセスできるような場合は、4通り用意するのが妥当かなぁと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -