CSharp classes should be sealed by default

if your class is able to be inherited from, changing how it works is a breaking change for users

there is actually a performance benefit: it's not that unsealed classes are inefficient, but small benefits add up (don't optimize prematurely, but this is a simpel change). This is because they don't have to check for covariance.

It is "reversible" if you need it to be

Analyzer Proposal: Seal internal/private types · Issue #49944 · dotnet/runtime · GitHub

dotnet_diagnostic.CA1852.severity = warning

Why all your classes should be sealed by default in C# - YouTube