qui è un codice C# che non si compila, dando il seguente messaggio:non può convertire da 'fuori T' a 'out Component'
non può convertire da 'fuori T' a 'out Component'
public void Get<T>(out T c) where T : Component
{
m_components.TryGetValue(typeof(T), out c);
}
Ecco codice che fa compilare:
public void Get<T>(out T c) where T : Component
{
Component temp;
m_components.TryGetValue(typeof(T), out temp);
c = (T)temp;
}
mi chiedo perché il primo codice non è valido dal "dove T: Componente" afferma esplicitamente che T è di tipo Componente.
Grazie
Perché dovresti rendere "Get" un metodo generico se T è definito come di tipo Componente? Forse sei un paradiso, hai menzionato lo scenario esatto qui. –
* twiddles thumbs in attesa che Mr. Skeet ci illumini su questo problema intrigante * – tster
Questo è un duplicato. http://stackoverflow.com/questions/1207144/c-why-doesnt-ref-and-out-support-polymorphism/1207302#1207302 –