Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo crear bibliotecas de clases o proyectos de consola .NET 5 en lugar de .NET Core 3.1
José María Aguilar - Quizás no estés comparando con null de forma totalmente correcta
José María Aguilar
.NET Core / .NET
- Date, Time, and Time Zone Enhancements in .NET 6
Matt Johnso - Debugging C# Source Generators with Visual Studio 2019 16.10
Steve Collins - Different ways to check if a value is null in C#
Gérald Barré - Extending HttpClient Testing With Templating
Adam Storr - A Closer Look at 5 New Features in C# 10
Matthew MacDonald - Build apps for Microsoft Teams with .NET
John Miller - C# tip: how to get the index of an item in a foreach loop
Davide Bellone - In the Jungle of .NET Obfuscator Tools
Patrick Smacchia - Rediscovering implicit casting
Ken Bonny - Command Line Arguments and C# 9.0 Top Level Statement
Abhijit Jana - Show dotnet: Running my .NET nanoFramework for 8 years on a battery
Laurent Ellerbach - A C# Library to Implement Array Tries
Jorge Luis Orejel
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: enlaces

Blazor permite crear componentes que son ignorantes respecto al modelo de hosting que están utilizando en tiempo de ejecución. Es decir, si lo diseñamos apropiadamente, un componente podría funcionar indistintamente en Blazor Server y Blazor WebAssembly, lo cual sería ideal desde el punto de vista de su reutilización.
Sin embargo, desde el interior de estos componentes, a veces necesitaremos distinguir cuándo están siendo ejecutados en Blazor Server y cuándo en Blazor WebAssembly. ¿Cómo podemos conseguir esto? Pues tenemos muchas maneras...
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Aplicar [Authorize] a todos los controladores MVC de una carpeta?
José María Aguilar - Radzen Blazor Components: ¡ahora open source!
José María Aguilar
.NET Core / .NET
- New LINQ extensions in .NET 6 and benchmarks
Kristoffer Strube - Benchmarking 4 reflection methods for calling a constructor in .NET
Andrew Lock - Conversation about .NET interop
Richard Lander - Working With .NET 6’s PriorityQueue
Khalid Abuhakmeh - Quick Tip - Compiler Directives and Using Aliases to Ignore Tests
Adam Storr - Migrate or Port Your Old Legacy .net Projects to the .NET5
Sibeesh Venu - Interpreting async code in CPU traces
Mark Downie - Conversation about the .NET type system
Richard Lander - Customizing Serilog text output
Nicholas Blumhardt - The Roslyn analyzers I use in my projects
Gérald Barré - .NET 6: Collections Improvements
Jonathan Allen

Desde C# 7 podemos emplear patrones en expresiones is
o bloques switch
para especificar las condiciones que deseamos comprobar, y cada nueva versión del lenguaje sigue introduciendo novedades al pattern matching, haciéndolo cada vez más sencillo y cómodo de utilizar.
En particular, C# 9 ha añadido un montón de características interesantes destinadas a facilitar el uso de patrones, pero en este post vamos a centrarnos en las dos más importantes: los combinadores de patrones y los patrones relacionales.
Ahí van los enlaces recopilados durante la semana pasada, con muchas novedades de la Build 2021. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Si usas [EmailAddress] y [Url] para validar datos de entrada, ojo: ¡que hace tiempo que ya no validan mucho!
José María Aguilar - BenchmarkDotNet: Arañando microsegundos en proyectos .NET Core o .NET Framework
José María Aguilar
.NET Core / .NET
- Announcing .NET 6 Preview 4
Richard Lander - Introducing the .NET Hot Reload experience for editing code at runtime
Dmitry Lyalin - How to Easily Create Telegram Bot using C#
Uladzislau Baryshchyk - C# 9 init accessors and records
Tom Deseyn - .NET Basics
Dustin Morris - How to use MediatR Pipeline Behaviours
Gary Woodfine - Finding concurrency bugs in a .NET application using Coyote
Gérald Barré - Simple Example of Calling REST API with HttpClient in .NET 5.0
Adam Storr - OData In .NET 5
Jay Krishna Reddy - Running a .NET application as a service on Linux with Systemd
Maarten Balliauw - Using DateOnly and TimeOnly in .NET 6 - Steve Gordon
Steve Gordon - The Difference Between HTML and URL Encode In .NET
Khalid Abuhakmeh - Building a Source Generator for C#
Jonathan Allen

Hace algunos años hablábamos de que la forma más correcta de determinar si un objeto es nulo en C# era utilizando el operador is
:
var invoice = _invoiceRepository.GetById(18);
if(invoice is null)
{
// Hacer algo
}
Como vimos en su momento, esta opción era mejor que utilizar una comparación directa como invoice == null
porque el operador de igualdad podía ser sobrecargado y, por tanto, su comportamiento podría ser modificado, mientras que el operador is
no es sobrecargable.
Sin embargo, al comenzar al usar esta fórmula, encontrábamos un pequeño inconveniente cuando queríamos determinar justo lo contrario, es decir, saber cuándo un objeto no es nulo, pues la sintaxis se volvía algo más pesada:
var invoice = _invoiceRepository.GetById(18);
if(!(invoice is null))
{
// Hacer algo
}