2011-10-18 145 views
0
Class a <T> { 
    public T j; 
} 

class b:a <int> { 

} 

家長如果這不是一個通用的,那麼你可以做到以下幾點:鑄造兒童與其他仿製藥

a foo = new b(); 

反正有做相同的一般情況?

有沒有更好的方法來做到這一點?

+1

@DavidePiras:你確定你沒改變問題的含義?這有點含糊,你選擇了一個解釋。 – Dani

+0

恢復;-)除了顏色,我沒有看到任何區別... –

+0

@Dani,源代碼中的代碼根本不含糊,它只是很差的格式化降價。您可以查看第一個修訂版的* [source](http://stackoverflow.com/revisions/4a516b43-751c-40d6-be0d-36910e6f82a8/view-source)*以自行驗證。文本重新格式化,以遵循原意。 –

回答

1

您需要a聲明的泛型參數:

class a<T> 
{ 
    public T j; 
} 

您還需要他們在b能夠從a推導:

class b<T> : a<T> { } 

然後你可以投b<T>a<T>

a<int> foo = new b<int>(); 

或者你也可以從特定a得出:

class b : a<int> { } 

然後抹上:

a<int> foo = new b(); 
+0

情況並非如此 - OP的B可以轉換爲「」,它不需要類型參數。 –

+1

@ChrisShain:在別人的編輯之後,檢查原件。 – Dani

+0

道歉 - 編輯你的答案,我會upvote。 –

5

您可以使用:

a<int> foo = new b(); 
0
public static void Main() 
{ 
    Base<int> foo = new Derived(); 
} 

class Base<T> 
{ 
    public T data; 
} 

class Derived:Base<int> 
{ 
}