先日、問題が発生したときにType.GetMethodメソッドを試していました。
私のプログラムはWindowsアプリケーションです。出力に使用されるフォームには1つのテキストボックスがあり、Form1_Loadメソッドには次の2つのコードブロックしかありません。
MethodInfo info2 = typeof(IEnumerable<int>).GetMethod("GetEnumerator");
textBox1.Text += info2.ToString();
MethodInfo info1 = typeof(IEnumerator<int>).GetMethod("MoveNext");
textBox1.Text += info1.ToString();
最初のGetMethodは正しい情報を返しましたが、2番目のGetMethodは何も返しませんでした。
そこで、さらに一歩進んで、コードにtry/catchステートメントを含めました。
try
{
MethodInfo info2 = typeof(IEnumerable<int>).GetMethod("GetEnumerator");
textBox1.Text += info2.ToString();
MethodInfo info1 = typeof(IEnumerator<int>).GetMethod("MoveNext");
textBox1.Text += info1.ToString();
}
catch (Exception v)
{
textBox1.Text += v.Message;
}
2番目のGetMethodで、次のエラーが発生します。
Object reference not set to an instance of an object.
私は混乱しています。どちらのメソッドも静的ではなく、パラメーターも取りません。GetEnumeratorが返さないのに、MoveNextがエラーを返すのはなぜですか?