参照渡しできるように、ポインターとして機能するジェネリック型を作成しました。(おそらくこれを行うにはもっと簡単な方法がありますが、それが理にかなっている場合、タスクを完了するための最も効率的な方法ではなく、ジェネリックと参照による受け渡しについてもっと学ぶためにこれを行っていることを強調したいと思います。)
これが私がジェネリックタイプのために書いたコードです
class GenericPointer<T> {
public T item;
public void setItem(T i){ item = i; }
public T getItem(){ return item; }
}
私のプログラムでは、「intPointer」と呼ばれるこのタイプのインスタンスを作成しました。値143は任意です。
GenericPointer<int> intPointer = new GenericPointer<int>();
intPointer.setItem(143);
Console.WriteLine(intPointer.getItem());
上記のコードは正しく実行され、値143を設定して返します。
ここで、この'intPointer'を、それをインクリメントしてから値を再度出力するメソッドに渡します。
そこで、addone()というメソッドを作成しました
public void addone(int i) { i ++; }
ここで、次の呼び出しを行います(すでに値を143に設定していることを思い出してください)。
Console.WriteLine(intPointer.getItem());
addone(intPointer);
Console.WriteLine(intPointer.getItem());
私が期待していたのは143、次に144でしたが、次のエラーが発生します。
The best overloaded method match for 'Notes.Program.addone(int)' has some invalid arguments
と:
cannot convert from 'Notes.GenericPointer<int>' to 'int'
どんな助けでも大歓迎です!