In java, I could do this with the 'final' keyword. I don't see 'final' in C#. Is there a substitute?
You're looking for the sealed
keyword. It does exactly what the final
keyword in Java does. Attempts to inherit will result in a compilation error.
As Joel already advised, you can use sealed
instead of final
in C#.
http://en.csharp-online.net/CSharp_FAQ:_Does_CSharp_support_final_classes
Also be aware that "I don't think anybody will ever need to inherit from this" is not a good reason to use "sealed". Unless you've got a specific need to ensure that a particular implementation is used, leave the class unsealed.
The sealed
keyword would work, but still you can derive from the class using reflection IIRC.
The sealed
modifier will do what final
does in Java.
Also, although this probably isn't what you're looking for in this situation, marking a class as static
also keeps it from being inherited (it becomes sealed behind the scenes).