A cosa serve questo motivo? si noti che è diverso dal C++ "modello di modello curiosamente ricorrente".classe X: X <T> {} schema in C#: a cosa serve?
5
A
risposta
4
Avere la classe generica di antenato sapere che il discendente effettivo che ne eredita aiuta in scenari in cui l'antenato generico deve esporre una determinata classe discendente non generica come parte del contratto del risultato del discendente non generico.
Un esempio comune è un metodo factory dichiarato l'antenato generico:
public class Parent<T>
where T : Parent<T>, new
{
public static T Create()
{
return new T(); // would be typically something more sophisticated
}
}
public class Child : Parent<Child>
{
}
Il vantaggio principale di questo concetto è il codice-deduplicazione.
+0
Non è di nuovo questo il modello di modello curiosamente ricorrente? Il post si occupa della classe X: X
Problemi correlati
- 1. A cosa serve `classe A [_]`?
- 2. Cosa significa x [x <2] = 0 in Python?
- 3. Che cosa significa (? <= X) in regex?
- 4. A cosa serve la classe Comparatore <T>?
- 5. Cosa è più veloce in Ruby, `arr + = [x]` o `arr << x`
- 6. `X x = x = X();` legale C++?
- 7. C# .NET 3.5: A cosa serve l'espressione <>?
- 8. Cosa fa var x = x || {};
- 9. A cosa serve l'avviso #pragma in C#?
- 10. A cosa serve Loader classe personalizzata
- 11. X {..} <- getYesod notazione
- 12. A cosa serve Enum?
- 13. Cosa significa: chiave = lambda x: x [1]?
- 14. A cosa serve __RequestVerificationToken?
- 15. A cosa serve <elemento contentEditable = "true"> in html?
- 16. Cosa significa "$ {x %% *}" in sh?
- 17. Differenza tra x | y e y <(x) in bash?
- 18. Numero più grande <x?
- 19. A cosa serve $ # in Bash
- 20. System.Web.Abstractions: a cosa serve?
- 21. A cosa serve #pragma?
- 22. A cosa serve Control.IsHandleCreated?
- 23. A cosa serve OverrideAuthenticationAttribute?
- 24. A cosa serve object()?
- 25. Cosa fa se [ "x"! = X] fare in bash?
- 26. .designer.cs a cosa serve?
- 27. A cosa serve Subject.asObservable?
- 28. A cosa serve AnyVal.types?
- 29. A cosa serve Control.Category?
- 30. CGRectIntegral a cosa serve?
Vuoi dire 'classe X: T'? Se è così, questo * è * il modello di modello curiosamente ricorrente. Nota che se il tuo titolo è corretto, 'X' e' X 'sono in realtà due tipi diversi; avremmo bisogno di vedere un esempio di tale uso. –
cdhowie
Sì, è il X: X non il modello CRTP. –
user580650