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

class b:a <int> { 

} 

で親に子をキャスト:これはジェネリックでなかったならば、あなたは、次の操作を行うことができジェネリック

a foo = new b(); 

一般的な場合と同じことを行うにはとにかくはありますか?

もっと良い方法がありますか?

を使用でき
+1

@DavidePirasを:あなたはあなたが変更していないされています質問の意味?それは少し曖昧で、あなたはそれの1つの解釈を選んだ。 – Dani

+0

は元に戻りました;-)色以外の違いはありませんでした。 –

+0

@Dani、ソースのコードはまったくあいまいではなく、マークダウンのためのフォーマットが不十分でした。最初のリビジョンの* [source](http://stackoverflow.com/revisions/4a516b43-751c-40d6-be0d-36910e6f82a8/view-source)*を確認して自分自身を確認することができます。元の意図に従うようにテキストが再フォーマットされました。 –

答えて

1

あなたはaで宣言された一般的なパラメータを必要とする:

class a<T> 
{ 
    public T j; 
} 

あなたはまた、aから導き出すことができるようにbでそれらを必要とする:

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は 'a 'にキャストできます。型パラメータは必要ありません。 –

+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> 
{ 
} 
関連する問題