Oto niektóre kodu C#, które nie kompiluje, podając następujący komunikat:nie można przekonwertować z „out T” do „z komponentu”
nie można przekonwertować z „out T” do „z komponentu”
public void Get<T>(out T c) where T : Component
{
m_components.TryGetValue(typeof(T), out c);
}
Oto kod, który robi kompilacji:
public void Get<T>(out T c) where T : Component
{
Component temp;
m_components.TryGetValue(typeof(T), out temp);
c = (T)temp;
}
zastanawiam się, dlaczego pierwszy kod nie jest poprawny ponieważ "gdzie T: składnik" wyraźnie stwierdza, że T jest typu Komponent.
Dzięki
Dlaczego konieczne jest wykonanie "Uzyskaj" jako ogólnej metody, jeśli T jest zdefiniowane jako typ Komponent? Być może jesteś tu, o tym miejscu nie wspominałeś. –
* Twiddles kciuki czekają na pana Skeeta, aby oświecić nas w tym intrygującym numerze * – tster
To jest duplikat. http://stackoverflow.com/questions/1207144/c-why-doesnt-ref-and-out-support-polymorphism/1207302#1207302 –