20 ;;Quote: .NET supports a wide variety of programming languages through the common language runtime (CLR)
|
21 ;;Quote: System.Attribute is an arbitrary type associated with an object; extends metadata, e.g., 'const'
|
22 ;;Quote: CLR supports unsafe code, tail calls, user-defined value types, enumerations, unsigned ints, variable length arguments, pointer arithmetic, global variables, private scope, function pointers, call-by-reference, multidim arrays, pinned objects
|
22 ;;Quote: CLR supports pinned objects that do not move during garbage collection; for arguments to native functions
|
23 ;;Quote: a value type is a bit sequence allocated on the stack with an implicit type; defines a representation and valid operations
|
23+;;Quote: a reference type is an explicitly typed object allocated from the heap; unique identity and type handle
|
23 ;;Quote: any value type instance can be boxed and turned into a reference type instance; inherits from ValueType or Enum; no subtyping
|
23 ;;Quote: CLR uses single inheritance with multiple interfaces; all interface methods must be implemented
|
23+;;Quote: can not derive a subtype from a sealed CLR type
|
23 ;;Quote: static CLR fields and methods are global to the type
|
23 ;;Quote: a virtual CLR method may be final (no derivation), new (parent method accessible), abstract (no implementation); interface methods are virtual
|
23 ;;Quote: a CLR property is a named value and its methods; typically a getter method and an optional setter method
|
23 ;;Quote: a CLR event includes methods for issuing, registering, and deregistering event notifications; like properties but with different, conventionally named methods
|
23 ;;Quote: CLR members defined with an accessibility rule: private, family, assembly, family and/or assembly, public
|
23+;;Quote: family accessibility only allows access from derived types
|
23+;;Quote: assembly accessibility allows access from an assembly; i.e., one or more application units with name scoping, class versioning, etc.
|
24 ;;Quote: CLR reflection allows runtime type creation, queries, and method invocation
|
24 ;;Quote: CLR does not specify method overloading; compiler explicitly specifies whether a method is virtual, non-virtual, or new
|
24 ;;Quote: a CLR type may have sequential or explicit layout; use explicit layout to define offsets and overall size for new value types
|
24 ;;Quote: a shared type system is necessary to integrate multiple languages
|
24+;;Quote: .NET's common language specification (CLS) is a subset of its type system; unique, Unicode names, no static and instance methods or fields, properties, events, predefined types, closed
|
25 ;;Quote: CLR uses Ramsey and Jones' two-pass runtime-stack unwinding exception handlers; first, find the handler, then cleanup stack, etc.; first, cross-language exception handler
|
25+;;Quote: CLR exception handlers may be typed (catch on type match), filtered (catch on true evaluation), termination (always called on exception cleanup); late binding
|