What is the equivalent of Java’s final in C#?
final keyword is the equivalent of C#'s
Two of those three are somewhat different in Java and C#:
In Java, methods are virtual by default, so any method can be declared
final to prevent it from being overriden. In C#, methods are not virtual by default, so the only overridden methods can be declared
sealed (To prevent them from being further overridden)
In Java, any variable or field can be declared
final to prevent it from being changed after initialization (And, for fields, outside the constructor). In C#, fields can be declared
readonly, for the exact same effect, but local variables cannot. Note that Java has no equivalent of C#'s
const keyword. (
consts in C# are evaluated at compile-time, and the values are hard-coded instead of being referenced)
For classes, C#'s
sealed classes and Java's
final classes are exactly the same (AFAIK).