0

独学で C# を履修する後期学生向けのサンプル プログラムを作成しています。わかっ<T>たつもりだったのですが、どうやらそれを最大限に活用できる魔法の秘密が欠けているようです。

変数を作成しようとすると、正常に機能します。

 static Test<char> c = new Test<char>('n');

ご覧のとおり、インスタンス化されており、すべてです。

次に、それを別の値に代入しようとすると、次のエラーが表示されます。タイプをConsole.Read()暗黙的に変換できません'char''ConsoleApplication1.Test<char>'

私は両方を試しました:

c = (char)Console.Read();

と:

c = Convert.ToChar(Console.Read());

さらに:(これを行うのはばかげていることは知っていますが、イライラしていて、うまくいくかどうかを確認したかったのです)

c = (char)Convert.ToChar(Console.Read());

というわけで、どうやって進めていくか完全に迷っています。助けてください。

Test編集:クラスの現在のコンストラクター:

    public Test() { }//empty constructor

    public Test(T obj)
    {
        variable = obj;
    }//filled constructor
4

1 に答える 1

4

Test<char>ではありませんcharTest<T>これは、提供された型引数 (つまり ) のオブジェクトで (おそらく) 何かを行う新しいジェネリック型 ( ) ですT。あなたの例では、charこのジェネリック型の型引数として型を使用したいと述べています。

Test<T>次のタイプのプロパティがあるとしTます。

class Test<T>{
    public T MyTypeValue { get; set; }
}

次に、このジェネリック型の新しいインスタンスを作成し、取得しようとしているもののインスタンスにプロパティを割り当てることができます (この場合、コンソールの読み取り):

static Test<char> c = new Test<char>(){ MyTypeValue = 'n'};

MyTypeValuecharジェネリック型のT型引数を介した型であるため、実際のをそれに割り当てることはできますが、に割り当てることはできませcharc。つまり、@Austinが提案しているように見える他の変換方法を実装していません。

于 2013-04-10T15:52:51.743 に答える