martes, 11 de junio de 2019
En el post anterior vimos que la estructura
Index
, junto con alguna cortesía del compilador, permitía la especificación de índices en arrays de forma muy sencilla. Veíamos cómo podíamos acceder a elementos concretos utilizando su posición en la colección, tanto contando desde el principio como desde el final:var primes = new[] { 2, 3, 5, 7, 11, 13, 17, 19 };
Index fromStart = 2; // = Index.FromStart(2) - conversión implícita
Index fromEnd = ^2; // = Index.FromEnd(2)
Console.WriteLine(primes[fromStart]); // 5
Console.WriteLine(primes[fromEnd]); // 17
Sin embargo, puede que a Index
por sí mismo tampoco le veáis demasiada utilidad... y así es. De hecho, su finalidad es más bien el dar soporte a rangos, una nueva característica de C#8 que nos permitirá referirnos a "porciones" de arrays o colecciones similares usando una sintaxis compacta e integrada en el lenguaje.
lunes, 10 de junio de 2019
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- 32 Síntomas que indican que estás afectado por el desarrollo
José María Aguilar - Cargar automáticamente objetos del modelo en acciones ASP.NET Core MVC
José María Aguilar
.NET / .NET Core
- C#9 – Type classes y extensiones
Eduard Tomás - Supporting the community with WF and WCF OSS projects
Scott Hunter - Throwing ArgumentException and InvalidOperationException
Peter Mbanugo - dnSpy: A Decompiler for .NET and Windows applications
Nick Randolph - Serializing a PascalCase Newtonsoft.Json JObject to camelCase
Andrew Lock - An Interesting Case Of .NET Performance and Caching
Khalid Abuhakmeh - Extension Methods Guidelines in C# .NET
Michael Shpilt - C# : Task Parallel Library (TPL) with async await and TaskCompletionSource for async I/O operations
Siddharth Patel - What's better than ILDasm? ILSpy and dnSpy are tools to Decompile .NET Code
Scott Hanselman - Ignoring a Billion-Dollar Mistake is simply not an Option
Ian Bebbington - PDF File Writer C# Class Library (Version 1.24.0)
Uzi Granot - How Can We Efficiently Sort Socks with C#?
Matthew Jones - Clever little C# and ASP.NET Core features that make me happy
Scott Hanselman
martes, 4 de junio de 2019
Seguimos analizando las novedades que traerá C# 8, y esta vez vamos a detenernos en una característica que aportará algo más de agilidad a la hora de trocear o acceder a elementos de arrays y algunos tipos de colecciones similares, como
Como muchas otras características del lenguaje, se trata de algunos azucarillos sintácticos creados en torno a dos nuevos tipos añadidos a las bibliotecas básicas del framework: las estructuras
Span<T>
.Como muchas otras características del lenguaje, se trata de algunos azucarillos sintácticos creados en torno a dos nuevos tipos añadidos a las bibliotecas básicas del framework: las estructuras
System.Index
y System.Range
. Por esta razón, para utilizar estos elementos no sólo es necesario disponer de nuevos compiladores, sino también de nuevas versiones del framework.Recordad que a día de hoy ya se puede probar C# 8 en Visual Studio 2019 o directamente desde la interfaz de línea de comandos de .NET Core.
lunes, 3 de junio de 2019
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Validación de peticiones en ASP.NET, o cómo evitar el error “Request.Form peligroso”
José María Aguilar - Quizás no estés comparando con null de forma totalmente correcta
José María Aguilar
.NET / .NET Core
- ¿Es lo mismo string o String en un programa C#?
José Manuel Alarcón Aguín - Spying on .NET Garbage Collector with .NET Core EventPipes
Christophe Nasarre - Porting desktop apps to .NET Core
Olia Gavrysh - 8 Techniques to Avoid GC Pressure and Improve Performance in C# .NET
Michael Shpilt - Debugging System.AggregateException
Thomas Ardal - How to Build .NET Strings at Run Time
Peter Vogel - Candidate Features For C# 9
Bassam Alugili - Extension Methods Are Easy with C#
Dirk Strauss - Let's talk about mapping objects in C#
Josef Ottosson - Shipping Pseudocode to Production
Dobromir Nikolov - Unexceptional non-blocking task-based flow control in .NET
Szymon Kulec - You can stop mocking ILogger
Joseph Woodward
martes, 28 de mayo de 2019
Otra característica bastante interesante de Entity Framework Core es que podemos introducir lógica personalizada a la hora de cargar el valor de las propiedades a partir de los datos obtenidos desde el almacén, y viceversa, usando los conversores de valores, o value converters.
Esta capacidad abre posibilidades bastante interesantes,que no eran tan inmediatas (o en algunos casos, ni siquiera posibles de forma directa) en versiones "clásicas" de Entity Framework, o EF Core anterior a 2.1. Gracias a ella podremos, por ejemplo, tener en nuestra entidad una propiedad de tipo enum mapeada a una cadena de caracteres en el almacén de datos, o introducir cualquier lógica de transformación, como podría ser la desencriptación y encriptación de valores, a la hora de leer y persistir información.
Esta capacidad abre posibilidades bastante interesantes,que no eran tan inmediatas (o en algunos casos, ni siquiera posibles de forma directa) en versiones "clásicas" de Entity Framework, o EF Core anterior a 2.1. Gracias a ella podremos, por ejemplo, tener en nuestra entidad una propiedad de tipo enum mapeada a una cadena de caracteres en el almacén de datos, o introducir cualquier lógica de transformación, como podría ser la desencriptación y encriptación de valores, a la hora de leer y persistir información.
lunes, 27 de mayo de 2019
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Parámetros opcionales: úsense con precaución
José María Aguilar - ¿Aplicar [Authorize] a todos los controladores MVC de una carpeta?
José María Aguilar
.NET / .NET Core
- Is it better to "!= 0” or ”== mask” when working with enums (C#, RyuJIT)
Jiří Činčura - WinForms - Single-File Applications With .NET Core 3
DevExpress Blogs - Default implementations coming to interfaces with C# 8
Gunnar Peipman - Como instalar un servicio Net Core en Linux
Jorge Turrado - Profiling .NET Core Memory Traffic using JetBrains dotMemory
Steve Gordon - The Uri composition mystery
João Antunes - HttpClient: How to remove charset from Content-Type header
Gunnar Peipman - Making Sense of .NET 5
Bill Reiss - Moving from Node.js to .NET Core
Jim Wang - Be careful of lazy dependencies
Nigel Sampson - Null No More
Simon Timms - Cross-Platform Selenium with DotNet Core
Andy R. Blank - Lying to the compiler
Jon Skeet - Analysing the Large Object Heap in JetBrains dotMemory
Steve Gordon