Classes A class defines the data members and function members for object instances that are created from that class.
Constructors A constructor is a class method that is executed when the class is created.
Delegates and Events Delegates are the object-oriented equivalent of the procedure pointer, offering a type-safe solution. Used in conjunction
with the EVENT keyword, they are generally used as a mechanism for one software component to notify another about an event
which has occurred, for example a key being pressed in a GUI environment.
Enums An enum (short for enumeration) represents a list of constant values, such as values for the days of the week. You can declare
an enum type that defines the values and symbolic names for them. You can then refer to the values by name.
Fields A class, valuetype and interface can define a set of static or instance fields.
Indexers Indexers resemble properties except that their accessors take parameters. Indexers allow instances of a class or valuetype
to be indexed just like arrays.
Interfaces An interface is a list of instance methods specifying names and signatures but without implementation.
Iterators An iterator is a section of code that returns an ordered sequence of values. You can create an iterator by defining a member
as an iterator, using iterator-id.
Methods A method defines a block of code to be executed when the method is invoked.
Operators A set of default operators are predefined and implemented. You can overload an operator and define your own behavior for it.
Procedure Division The procedure division defines the code to be executed when a type or member is invoked. The procedure division header defines
any parameters to pass in to the code and any returning item to pass back.
Procedure Division Header You can specify the parameters, both passed to a member and items returned, in either the method signature or the procedure
division header. If the parameters are specified in the method signature, the procedure division header must be omitted from
the method.
Properties Properties are members with associated types. They are similar to fields but they have accessors that provide the means to
read and write values.
Type Members A class, valuetype or interface can define a set of members, such as methods and properties.
ValueTypes Value types can contain data members and function members, similar to classes. The difference is that value types store the
data as values and don't require heap allocation.