引数や戻り値に意図していない値を引き継いでいる
* 以下のサンプルではいまいち分かりにくいかもしれないが、引数が多くなると上記のようなことが起こりえる(ってゆーかー起こった)
サンプル
public interface ISample
{
double Execute(int x, int y);
}
SubClassA.cs (共通インターフェイスを継承したクラス)
public class SubClassA : ISample
{
public double Execute(int x, int y)
{
return x / y;
}
}
SubClassB.cs (共通インターフェイスを継承したクラス)
public class SubClassB : ISample
{
public double Execute(int x, int y)
{
return x * y;
}
}
Form1.cs (呼び出し側)
private void button1_Click(object sender, EventArgs e)
{
this.ShowDivide(new SubClassB(), 10, 2);
this.ShowMultipe(new SubClassA(), 10, 2);
}
private void ShowDivide(ISample instance, int x, int y)
{
// ★重要★ 期待してる出力としては、割り算を行うSubClassA()を
// 渡さなくてはならないがインターフェイスが引数の型なので、
// 掛け算を行うSubClassA()を渡せてしまい、バグの原因になってしまう
this.label1.Text = x + " ÷ " + y + " = " + instance.Execute(x, y).ToString();
}
private void ShowMultipe(ISample instance, int x, int y)
{
this.label2.Text = x + " × " + y + " = " + instance.Execute(x, y).ToString();
}