En C #, ¿qué where T : class
significa?
Es decir.
public IList<T> DoThis<T>() where T : class
En pocas palabras, esto está restringiendo el parámetro genérico a una clase (o más específicamente un tipo de referencia que podría ser una clase, interfaz, delegado o tipo de matriz).
Vea este artículo de MSDN para más detalles.
Es una restricción de tipo genérico . En este caso, significa que el tipo genérico
T
tiene que ser un tipo de referencia (clase, interfaz, delegado o tipo de matriz).fuente
Es una restricción de tipo
T
, que especifica que debe ser una clase.La
where
cláusula se puede usar para especificar otras restricciones de tipo, por ejemplo:Para obtener más información, consulte la página de MSDN en la
where
cláusula o las restricciones de parámetros genéricos .fuente
where T : class, IComparable, new()
Eso se restringe
T
a los tipos de referencia . No podrá poner tipos de valor (struct
sy tipos primitivos exceptostring
) allí.fuente
significa que el tipo utilizado como
T
cuando se usa el método genérico debe ser una clase, es decir, no puede ser una estructura o un número incorporado comoint
odouble
fuente
where T: class
literalmente significa esoT has to be a class
. Puede ser cualquier tipo de referencia. Ahora, siempre que el código llama a suDoThis<T>()
método debe proporcionar una clase para reemplazar T . Por ejemplo, si tuviera que llamar a suDoThis<T>()
método, tendré que llamarlo de la siguiente manera:Si su método es como el siguiente:
Entonces, siempre que aparezca T en su método, será reemplazado por MyClass. Entonces, el método final que llama el compilador se verá así:
fuente
new T()
no es posible conwhere T : class
. tienes que especificarwhere T: new()
que se te permita hacerlo.Se llama restricción de parámetro de tipo. Efectivamente limita qué tipo T puede ser.
Restricciones en los parámetros de tipo (Guía de programación de C #)
fuente
T representa un tipo de objeto de, implica que puede dar cualquier tipo de. IList: si IList s = new IList; Ahora s.add ("Siempre aceptar cadena").
fuente
Aquí T se refiere a una clase. Puede ser un tipo de referencia.
fuente
'T' representa un tipo genérico. Significa que puede aceptar cualquier tipo de clase. El siguiente artículo podría ayudar:
fuente