martes, 11 de junio de 2019

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
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

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
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

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
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