ABL calls the static constructor of a class exactly once in a session to initialize its static data members and properties some time after you first reference the class type in the session. ABL calls this static constructor before any other action on a class type that has static members. So, if you instantiate the class as the first reference to its type, its static constructor executes before any of its instance constructors. If the static constructor raises
ERROR, ABL fails to load its class type. This makes the class type unavailable for access during the remainder of the session. For more information on error handling for static constructors, see
Raising errors within a static constructor.
If the class definition has super classes with their own static members, ABL initializes all of these static members by calling the static constructor for each class in the hierarchy from top to bottom. If the class is being instantiated with this reference, it then initiates the call to all the instance constructors of the class hierarchy. For more information on initialization during class instantiation, see
Classhierarchies and inheritance.
As noted previously, static members of a class, once initialized, are scoped to the class type and remain available for the duration of the ABL session. Thus, you cannot delete them during the session. The only way to remove static members from an application is by removing them from the source code and running the recompiled application in a new ABL session.