アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#でClassAを継承したClass1~20があり、
それらに以下のような処理をしているのですが、行数が増えすぎて見難いです。
もっと綺麗に書く方法はないのでしょうか?
class10の処理が「同じ処理」ならClassA型の配列でいけそうなんですが…。
class10だけ配列に入れないか、配列に入れてclass10の部分だけスキップするしか方法はないんでしょうか?
(頭が小文字なのはそのクラスのインスタンスです)
if(class1 != null)
{
  class1.同じ処理
}
if(class2 != null)
{
  class2.同じ処理
}
if(class3 != null)
{
  class3.同じ処理
}
   ・
   ・
   ・
if(class10 != null)
{
  class10.別の処理
}
   ・
   ・
   ・
if(class20 != null)
{
  class20.同じ処理
}

A 回答 (1件)

> class10の処理が「同じ処理」ならClassA型の配列でいけそうなんですが…。


なら、メソッドを呼び出す側から見て同じ処理にしてしまえばいいんです。
そのためのメソッドのオーバーライドです。

public ClassA
{
 // ......

 public virtual void someMethod()
 {
  同じ処理
 }
}

Class10 : ClassA
{
 // ......

 public override void someMethod()
 {
  別の処理
 }
}

という具合にして、ClassA型の配列で回して someMethod() を実行しましょう。
someMethod() の引数・戻り値はやりたい処理に合わせて修正してください。
    • good
    • 0
この回答へのお礼

思っていたのとは少し違ったのですが、自己解決しました。
ちょっと別の疑問が湧いてきたので、質問変えて投稿しました。
https://oshiete.goo.ne.jp/qa/9110015.html
よろしければこちらも回答していただけると助かります。
回答ありがとうございました。

お礼日時:2015/11/15 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!