My understanding is that the static keyword was introduced for compatibility with .NET (along with strict)
class TExample
class procedure First;
class procedure Second; static;
The differences between procedures First and Second are :-
Firstcan be overridden in a descendant classFirstpasses an implicit self parameter referencing theTExampleclass.
Class procedure Second cannot be overridden and passes no parameters and is thus .NET compatible. So is there any point in using the static keyword in native-only code now that there is a divergence between Delphi & Prism syntax?
Static class methods have no hidden class reference argument. Because of this, they are assignment compatible with plain old function pointers, and can therefore be used for interaction with the Windows API and other C APIs. Example:
(Of course, you could have used a global function instead, but other than global functions, static class functions have a clear association with a class.)