11

C# のかなり基本的な質問、

class Data<T>
 {
    T obj;

    public Data()
    {
      // Allocate to obj from T here
      // Some Activator.CreateInstance() method ?
      obj =  ???
    }
 }

どうすればいいですか?

4

3 に答える 3

23

T の独自のインスタンスを作成する場合は、制約を定義する必要がありますnew()

class Data<T> where T: new()
 {
    T obj;

    public Data()
    {
      obj =  new T();
    }
 }

obj を渡したい場合は、コンストラクターでそれを許可する必要があります

 class Data<T>
     {
        T obj;

        public Data(T val)
        {
          obj = val;
        }
     }
于 2010-01-07T23:03:02.507 に答える
1

YOU は、ジェネリック クラス定義でnew制約を使用して、T に呼び出し可能な既定のコンストラクターがあることを確認できます。制約を使用すると、ジェネリック パラメーター T が従わなければならない特定の動作 (機能) についてコンパイラーに通知できます。

class Data<T> where T : new()
{
    T obj;

    public Data()
    {
        obj = new T();
    }
}
于 2010-01-07T23:03:53.100 に答える
0

これが役立つかもしれません:http://pooyakhamooshi.blogspot.com/2011/06/how-to-instantiate-generic-type-with.html

于 2011-06-17T21:27:22.310 に答える