2014-03-25 55 views
0

我有一个使用泛型类型的类,如何通过传递类型与泛型类型返回一个类

public class BaseClass<T> { 
    public T Data { get; set; } 
    public BaseClass(T data) { 
    this.Data = data; 
    } 
    public BaseClass() { } 
} 

我想创建一个返回BaseClass<T>对象的方法,所以我尝试此:

public BaseClass<T> NoData() { 
    return new BaseClass<T>(null); 
} 

,并用东西把它像return NoData<MyTClass>();

我得到一个错误寿与<T>The type or namespace 'T' cannot be found

这是可能在c#中做?谢谢!

回答

4

你只需要一个通用的参数添加到方法名称:

public BaseClass<T> NoData<T>() { 
    return new BaseClass<T>(null); 
} 

但是因为你不指定T是一个类,你需要使用更通用default(T)

public BaseClass<T> NoData<T>() { 
    return new BaseClass<T>(default(T)); 
} 

而且因为你有一个默认的构造函数,基本上做了你可以在同样的事情也做:

public BaseClass<T> NoData<T>() { 
    return new BaseClass<T>(); 
} 
+1

但由于T可以是任何类型:return new BaseClass (default(T)); – Dtex

+0

@Dtex好捕 - 补充。 –

+0

这是完美的,谢谢! –