2014-03-25 86 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

這是完美的,謝謝! –