"Different languages offer different capabilities.For example, in unmanaged C/C++, you have pretty low-level control of the system. You can manage memory exactly the way you want to, create threads easily if you need to, and so on. Microsoft Visual Basic 6.0, on the other hand, allows you to build UI"
"The C# using directive instructs the compiler to try prepend-ing different prefixes to a type name until a match is found. The compiler will scan all of the referenced assemblies looking for the type’s definition. After the compiler finds the proper assembly, the assembly information and the type in"
"The C# compiler, by default, automatically looks in the MSCorLib.dll assembly even if you don’t explicitly tell it to. The MSCorLib.dll assembly contains the definitions of all of the core Framework Class Library (FCL) types, such as Object, Int32, String, and so on."
"When a thread is created, it is allocated a 1-MB stack. This stack space is used for passing arguments to a method and for local variables defined within a method. Stacks build from high-memory addresses to low-memory addresses. All but the simplest of methods contain some prologue code, which initi"
"System.Object’s GetType method simply returns the address stored in the specified object's type object pointer member. In other words, the GetType method returns a pointer to an object’s type object, and this is how you can determine the true type of any object in the system (including type objects)"
"Any data types the compiler directly supports are called primitive types. Primitive types map directly to types existing in the Framework Class Library (FCL)."
"Even though unboxed value types don’t have a type object pointer, you can still call virtual methods (such as Equals, GetHashCode, or ToString) inherited or overridden by the type. If your value type overrides one of these virtual methods, then the CLR can invoke the method nonvirtually be- cause va"