C#のオーバーロードとコレクションについて質問です。
オーバーロードはコンストラクターやメソッドを対象にして行うものですが、いまいちその必要性が理解できなくて困っています。
恐らく根本的な理解の甘さからくる疑問だとは思うのですが、よくわからないのです。
まずシグニチャの異なるメソッドを同じ名前でわざわざ作る理由が分かりません。
オーバーロードするものが必ずしも完全に処理が同じだとも限らないのだから、普通に異なるメソッドとして定義した方が可読性が高まりそうな気がして混乱しています。
コンストラクターについてもそうで、コンストラクターに初期化子でわざわざ引数を渡さなくても引数を増やしたり、ブロックの式を増やして対応できないものでしょうか。
例えば以下のコードですが
C#
1class Dog 2{ 3 public Dog() : this("犬はかわいい") 4 { 5 System.Console.WriteLine("とてもかわいい"); 6 } 7 public Dog(string copy) 8 { 9 System.Console.WriteLine(copy); 10 } 11} 12
これは
C#
1 2class Dog 3{ 4 public Dog(string copy) 5 { 6 copy = "犬はかわいい" 7 8 System.Console.WriteLine(copy); 9 System.Console.WriteLine("とてもかわいい"); 10} 11
こちらのコードと同義ではないのでしょうか?
正直オーバーロードを使う必要性があまり分からないのですが、どうかご教授願いたいです。
こうしてプログラミングの基礎として教本に乗ってる以上は確かな実用性がある手法であるのは間違いないでしょうし、僕もそれを使いこなせるようになりたいのです。
また、コレクションについてですが
・リストは動的に容量が変わる配列、つまり順番でデータを管理する時に。
・セットは集合、集団同士の要素の重なりや重複を確かめたい時に。
・ディクショナリはデータとデータを紐づけて管理したい時に用いる。
というような認識で構わないでしょうか、というのが質問でございます。
初歩的な上に長い質問になってしまいまして申し訳ありませんが、どうか良い知恵をお借りしたいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー