Start Debugging

Tag: csharp

335 Beiträge · Seite1von34

Lazy<T> vs LazyInitializer.EnsureInitialized vs Double-Checked Locking in C#
Verwenden Sie standardmäßig Lazy<T>: Es führt die Factory genau einmal aus, speichert Ausnahmen zwischen, und seine Lesezugriffe sind nach der Initialisierung zu billig, um messbar zu sein. Nutzen Sie LazyInitializer.EnsureInitialized, wenn Sie viele Felder oder Array-Elemente lazy befüllen und sich ein zusätzliches Objekt pro Wert nicht leisten können. Handgeschriebenes Double-Checked Locking lohnt sich unter .NET 10 fast nie.
Zahlen mit indischer Lakh/Crore-Ziffern-Gruppierung in .NET formatieren (NumberGroupSizes)
Verwenden Sie die Kultur en-IN oder setzen Sie NumberFormatInfo.NumberGroupSizes auf [3, 2], um in C# 12,34,56,789 statt 123,456,789 auszugeben. Gemessen auf .NET 10 und .NET 11 RC1: wie das Array funktioniert, warum CurrencyGroupSizes getrennt ist, die Invariant-Globalization-Falle, die stillschweigend westliche Gruppierung ausgibt, und ein Hilfsmittel für Lakh/Crore-Wörter.
Was kopiert ein C# `with`-Ausdruck tatsächlich, und warum werden berechnete Record-Eigenschaften nicht neu berechnet?
Ein with-Ausdruck ruft die vom Compiler generierte Methode <Clone>$ des Records auf, die einen Kopierkonstruktor ausführt: Er kopiert jedes Instanzfeld und überspringt alle Initialisierer. Deshalb sind Eigenschaften, die aus anderen Eigenschaften initialisiert werden, zwischengespeicherte Werte und Guid-IDs nach dem Kopieren veraltet. Gemessen unter .NET 10 mit C# 14, samt den Lösungen, die tatsächlich funktionieren.
Was ist ref-safe-context in C#, und wie legt der Compiler sie für ref-Locals fest?
ref-safe-context ist der Gültigkeitsbereich, in dem ein Verweis auf eine Variable gültig bleibt. Hier sind die vier Contexts, die Regel, die den Context eines ref-Locals bei seinem Initialisierer festlegt, der Grund, warum eine ref-Neuzuweisung ihn nie erweitern oder einengen kann, und die daraus folgenden Fehler CS8157, CS8168, CS8374 und CS9079, mit Compiler-Ausgabe von C# 14 auf .NET 10 und .NET 11 RC1.
FileSystemWatcher vs. Polling zur Erkennung von Dateiänderungen auf einer Netzwerkfreigabe in .NET
Auf einer SMB- oder NFS-Freigabe ist Polling die maßgebliche Quelle und FileSystemWatcher bestenfalls ein Hinweis. FileSystemWatcher verpasst Remote-Änderungen unter Linux und macOS, läuft über seinen 64-KB-Netzwerkpuffer über und stoppt endgültig, wenn die Verbindung abbricht. Verwenden Sie einen periodischen Snapshot-Vergleich und lassen Sie den Watcher nur einen früheren Scan auslösen. Geprüft mit .NET 10.0.10.
Weiter