Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 17968|Respuesta: 0

[Fuente] C# donde el análisis de uso

[Copiar enlace]
Publicado en 12/7/2016 11:35:43 | | |

La cláusula where se utiliza para especificar restricciones de tipo que pueden servir como variables para parámetros de tipo definidos en declaraciones genéricas.
1. Restricciones de interfaz.
Por ejemplo, puedes declarar una clase genérica MyGenericClass, de modo que el parámetro de tipo T pueda implementar la<T> interfaz IComparable:

clase pública<T> MyGenericClass donde T:IComparable { }

2. Restricción de clase base: Indica que un tipo debe usar la clase especificada como clase base (o la clase en sí) para ser utilizada como parámetro de tipo para ese tipo genérico.
Una vez utilizada dicha restricción, debe aparecer antes que todas las demás restricciones sobre el tipo de parámetro.
clase MyClassy<T, U>
donde T : clase
donde U : struct
{
}

La cláusula 3.where también puede incluir restricciones del constructor.
Puedes usar el nuevo operador para crear una instancia de un parámetro de tipo; Pero el argumento de tipo debe estar restringido por la restricción constructor new() para esto. La restricción new() indica al compilador que cualquier tipo de argumento proporcionado debe tener un constructor accesible sin parámetros (o por defecto). Por ejemplo:
clase pública <T> MyGenericClass donde T: IComparable, new()
{
La siguiente línea no es posible sin una nueva restricción:
Elemento T = nuevo T();
}
La restricción new() aparece al final de la cláusula where.

4. Para múltiples parámetros de tipo, cada parámetro de tipo utiliza una cláusula where,
Por ejemplo:
interfaz MyI { }
Diccionario de clase<TKey, TVal>
donde TKey: Comparable, IEnumerable
donde TVal: MyI
{
empty público Añadir (clave TKey, TVal val)
{
}
}

5. También puedes añadir restricciones a parámetros de tipo de métodos genéricos, como:

public bool <T>MyMethod(T t) donde T : IMyInterface { }

Nótese que la sintaxis para describir las restricciones de parámetros de tipo es la misma tanto para los delegados como para los métodos:

delegar T <T>MiDelegado() donde T : nuevo()





Dónde genérico

Donde genérico puede calificar parámetros de tipo. Hay varias maneras.

·donde T : struct restringe el parámetro de tipo T debe heredar de System.ValueType.

·donde T: clase restringe el tipo El parámetro T debe ser un tipo de referencia, es decir, no puede heredarse del Sistema.TipoValor.

donde T : new() restringe el parámetro de tipo T debe tener un constructor por defecto

·donde T : NameOfClass restringe el parámetro de tipo que T debe heredar de una clase o implementar una interfaz.

Estos calificativos pueden combinarse, como: clase pública Punto donde T : clase, IComparable, nuevo()




Anterior:Clase de ayuda de c# NHibernate
Próximo:c# http escucha hilos con HttpListener
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com