Herramientas de usuario

Herramientas del sitio


highlevel:chsarp:versions

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
highlevel:chsarp:versions [2009/03/23 07:54]
alfred
highlevel:chsarp:versions [2020/05/09 09:25] (actual)
Línea 208: Línea 208:
 } }
 </​code>​ </​code>​
 +
  
  
Línea 238: Línea 239:
 </​code>​ </​code>​
  
 +==== Métodos de extensión ====
 +Permiten añadir nuevos métodos a clases ya existentes sin tener que recompilar. ​
 +Para utilizarlos lo que haremos será crear una clase estática con un método estático de un único parámetro, si antes de la definición del tipo de dicho parámetro colocamos la palabra '​this'​ el método pasará a ser un método de extensión para los objetos del mismo tipo que el parámetro:
 +<code csharp>
 +static class MyExtensions {
 +    public static bool isValidEmail(this string str) {
 +        return true;
 +    }
 +}
 +</​code>​
 +Ahora dicho método puede ser utilizado en los objetos de este tipo:
 +<code csharp>
 +string str = "";​
 +str.isValidEmail();​
 +</​code>​
 +Si la clase no pudiese ser accedida (debido a que está en otro namespace o librería necesitaríamos utilizar la clausula '​using':​
 +<code csharp>
 +using MyExtensions;​
 +</​code>​
 +Si quisieramos que se pudiese pasar algún argumento a este método entonces añadiremos otro parámetro al método de extensión:
 +<code csharp>
 +public static bool isIn(this string str, IEnumerable<​string>​ col)
 +{
 +    foreach (string s in col)
 +        if (s.CompareTo(str) == 0)
 +            return true;
 +    return false;
 +}
 +// Y luego...
 +List<​string>​ lStr = new List<​string>​ { "​Hi",​ "​Hello",​ "Bon Journo"​ };
 +string str = "​Hola";​
 +str.isIn(lStr);​
 +</​code>​
  
 ==== Expresiones Lambda ==== ==== Expresiones Lambda ====
Línea 303: Línea 337:
 </​code>​ </​code>​
 === Expression Trees === === Expression Trees ===
 +
 +
  
  
  
 ==== LINQ ==== ==== LINQ ====
-LINQ da de forma nativa expresiones para describir operanciones sobre datos que no han sido modelados de forma orientada a objetos (por ejemplo, crear expresiones que busquen en un array de elementos ubicado en memoria) a partir de cierto patrón. También puede ser extensible a otros campos (including LINQ to SQL (DLINQ), LINQ to Dataset, LINQ to Entities, LINQ to XML (XLINQ), o LINQ to Objects) siempre y cuando los elementos ​que se buscan extienden ​''​IEnumerable''​. \\ \\  +LINQ da de forma nativa expresiones para describir operanciones sobre datos que no han sido modelados de forma orientada a objetos (por ejemplo, crear expresiones que busquen en un array de elementos ubicado en memoria) a partir de cierto patrón. También puede ser extensible a otros campos (including LINQ to SQL (DLINQ), LINQ to Dataset, LINQ to Entities, LINQ to XML (XLINQ), o LINQ to Objects) siempre y cuando los elementos se encuentren una clase que extienda ​''​IEnumerable''​. \\ \\  
-[[fw:​othersnet:​linq|Aquí]] el apartado que profundiza en este tema.+  ​* ​[[fw:​othersnet:​linq|Apartado general sobre LINQ]]. 
 +  * [[fw:​othersnet:​dlinq|Apartado general sobre DLINQ (LINQ to SQL)]]. 
highlevel/chsarp/versions.1237794868.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)