En las plantillas de C++, se puede especificar que un cierto parámetro de tipo es un valor predeterminado. Es decir. a menos que se especifique explícitamente, usará el tipo T.¿Existe un enfoque razonable para los parámetros de tipo "predeterminado" en C# Generics?
¿Se puede hacer esto o aproximar en C#?
Busco algo como:
public class MyTemplate<T1, T2=string> {}
Para que una instancia del tipo que no se especifica explícitamente T2
:
MyTemplate<int> t = new MyTemplate<int>();
sería esencialmente:
MyTemplate<int, string> t = new MyTemplate<int, string>();
En última instancia estoy viendo un caso en el que hay una plantilla que es bastante amplia sed, pero estoy considerando expandirme con un parámetro de tipo adicional. Podría crear una subclase, supongo, pero tenía curiosidad si había otras opciones en este sentido.
ah ... eso tiene sentido.¿Se permite que el nombre de tipo sea el mismo si los parámetros de tipo proporcionan una firma única? – el2iot2
@ee: sí, los genéricos son 'overloadable' por parámetro count. –
@ee: Sí, pero sería cauteloso de hacer eso. Es "legal" en .NET hacerlo, pero puede generar confusión. Prefiero que el nombre del tipo de cadena derivada sea similar a la clase genérica principal (por lo que es obvio qué es/fácil de encontrar), pero un nombre que hace que sea obvio que es una cadena. –