Start Debugging

Etiqueta: csharp

335 posts · Página1de34

Lazy<T> vs LazyInitializer.EnsureInitialized vs double-checked locking en C#
Usa Lazy<T> por defecto: ejecuta la factory una sola vez, almacena en caché las excepciones y sus lecturas son demasiado baratas para medirlas tras la inicialización. Usa LazyInitializer.EnsureInitialized cuando inicializas de forma diferida muchos campos o posiciones de un arreglo y no puedes pagar un objeto extra por valor. El double-checked locking escrito a mano casi nunca vale la pena en .NET 10.
Cómo formatear números con la agrupación de dígitos india lakh/crore en .NET (NumberGroupSizes)
Usa la cultura en-IN o asigna NumberFormatInfo.NumberGroupSizes a [3, 2] para imprimir 12,34,56,789 en lugar de 123,456,789 en C#. Medido en .NET 10 y .NET 11 RC1: cómo funciona el arreglo, por qué CurrencyGroupSizes es independiente, la trampa del modo de globalización invariante que imprime en silencio la agrupación occidental y un helper para lakh/crore en palabras.
¿Qué copia realmente una expresión `with` de C# y por qué las propiedades calculadas de un record no se recalculan?
Una expresión with llama al método <Clone>$ que el compilador genera en el record, el cual ejecuta un constructor de copia que copia todos los campos de instancia y omite todos los inicializadores. Por eso las propiedades inicializadas a partir de otras propiedades, los valores en caché y los ID Guid quedan desactualizados. Medido en .NET 10 con C# 14, con las soluciones que sí funcionan.
Qué es ref-safe-context en C# y cómo lo decide el compilador para los ref locals
ref-safe-context es el ámbito en el que una referencia a una variable sigue siendo válida. Aquí están los cuatro contextos, la regla que fija el contexto de un ref local en su inicializador, por qué la reasignación de ref nunca puede ampliarlo ni reducirlo, y los errores CS8157, CS8168, CS8374 y CS9079 que se derivan de ello, con la salida del compilador de C# 14 en .NET 10 y .NET 11 RC1.
FileSystemWatcher vs sondeo para detectar cambios de archivos en un recurso compartido de red en .NET
En un recurso compartido SMB o NFS, el sondeo es la fuente de verdad y FileSystemWatcher es, como mucho, una pista. FileSystemWatcher no detecta los cambios remotos en Linux y macOS, desborda su búfer de red de 64 KB y se detiene para siempre cuando se cae la conexión. Usa una comparación periódica de instantáneas y deja que el watcher solo adelante un escaneo. Verificado en .NET 10.0.10.
Siguiente