私は自分の興味のためにダミーのエクササイズを作成しようとしています。 2つのテキストボックス(textBox1、textBox2)とボタンを持つ1つのフォーム(form1)があります。メソッドに渡されたオブジェクトは、C#のリファレンスを保持していません
ボタンをクリックすると、テキストボックスに渡された数値を追加します。 私は、インターフェイス(ICalculate)とインターフェイス(インターフェイス)を実装するクラス(計算)を行うための適切なメソッドのシグネチャを持つインターフェイスを導入することで、物事を複雑にしようとしています。
次に、Calcという別のクラスがForm1からICalculateオブジェクトと2つの整数(a、b)をそのコンストラクタに渡して開始されます。 さらに、Calcクラスには、ICalculateオブジェクトと、クラスのコンストラクタでインスタンス化された2つの整数を使用して、メッセージボックスに結果を表示する2つの整数を追加するメソッド(addition())があります。 (オブジェクト参照オブジェクトのインスタンスに設定されていない)
問題は、コンパイラはICalculateオブジェクトが初期化されていないというエラーをスローすることである
コードは、以下である:
public interface ICalculate
{
int add(int x, int y);
int sub(int x, int y);
}
class Calculations : ICalculate
{
public int add(int a, int b)
{
return (a + b);
}
public int sub(int z, int k)
{
return (z - k);
}
}
class Calc
{
private ICalculate _nc;
private int _x, _y;
public Calc(ICalculate nc, int a, int b)
{
var _nc = nc;
_x = a;
_y = b;
}
public void addition()
{
MessageBox.Show(_nc.add(_x, _y).ToString());
}
}
}
Form1のコードは以下の通りです:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var a = Int32.Parse(textBox1.Text);
var b = Int32.Parse(textBox2.Text);
var c = new Calc(new Calculations(), a, b);
c.addition();
}
}
すべてのヘルプ感謝します!
'をVAR _nc = NC;'何が起こるかをテストするだけですか?既に_ncを宣言しているので、varなしで試してみましょう。デバッガを使ってコードを実行してください。 – Grantly
"自分の興味のためにダミーのエクササイズをしようとしています。いいえ、私はあなたがいるとは思わない。 –
[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) ) – Plutonix