The topics in this part are listed below. The code snippets if any are based on the new C++ .NET syntaxes. The code snippets if any are based on the new C++ .NET syntaxes.
The .NET Framework Namespaces
Namespaces is a logical naming scheme for grouping related types. The logical is seen or used by system/program and the physical seen or used by human. The .NET Framework uses a hierarchical naming scheme for grouping types into logical categories of related functionality, such as the ASP.NET technology or remoting functionality. Design tools can use namespaces to make it easier for developers to browse and reference types in their code. A single assembly can contain types whose hierarchical names have different namespace roots, and a logical namespace root can span multiple assemblies. In the .NET Framework, a namespace is a logical design-time naming convenience, whereas an assembly establishes the name scope for types at run time. The .NET Framework class library is made up of a set of classes, interfaces, structures, and enumerations that are contained in almost 100 namespaces. This section begins by trying to explain how to use namespaces in managed C++ code and then goes on to list the major .NET namespaces, together with brief details of their function and content. You’ve already encountered .NET namespaces in use in managed C++ code when you’ve used the C++ using keyword, as in the following example:
As with traditional C++ namespaces, .NET namespaces provide an additional level of scoping that helps you organize code and guard against name clashes. Two classes with the same name can be used in a program, provided that they belong to different namespaces. A type name that includes the namespace information is called the fully qualified name, as in the examples shown here:
Namespace names in .NET typically consist of more than one word. In managed C++, the components of the name are separated by the scope resolution operator (::). In other .NET languages such as C# and Visual Basic .Net, the components are separated using a period (.), so in Visual Basic .Net, the preceding examples would be:
System.Collections.ArrayListSystem.Threading.Thread
|
All classes, interfaces, structures, and enumerations that are part of the .NET Framework class library belong to a namespace. All the namespaces provided by Microsoft begin with one of two prefixes:
Those that start with System have been developed as part of the .NET Framework class library.
Those beginning with Microsoft have been developed by other product groups within Microsoft.
Namespace names can have any number of components, but there’s no hierarchical relationship implied in names that contain the same root components. The hierarchical nature of namespace names simply gives you a way to organize your classes. So, for example, System::Collections::Specialized and System::Collections both contain collections, yet they aren’t necessarily related in any other way.
Although .NET namespaces look very much like Java package names, there’s no relationship between namespace names and directory paths as there is in Java. There’s no requirement that all the classes belonging to one namespace are defined in the same DLL or that a single DLL contains classes from only one namespace.
Using Namespaces in C++ Programs
Managed C++ programs use the #using preprocessor directive to import metadata into a program using the Managed Extensions for C++. Remember that metadata is information that describes the types in an assembly, and it includes the fully qualified names of all the types. For example, if the compiler sees a line such as:
#using <mscorlib.dll>
It loads the DLL and reads the metadata for all the types that are defined there. Because mscorlib.dll contains most of the core .NET Framework classes, it imports the metadata for a very large number of types. Fortunately the new version C++ (VC+ + 2005) already included the <mscorlib.lib> automatically. So, no need to put it in your program and included in this module for completeness.
The #using keyword means that you have to know which DLL holds the class or classes you want to use. Your normal source for this information will be the online help, and whenever we mention a namespace in the rest of this module, we’ll also say which DLL it belongs to. Some of the fully qualified names can get rather long. Thus, it’s common to use a traditional using directive to specify namespace names so that you can use unqualified names, as shown here:
// Read the metadata for MSCORLIB
#using <mscorlib.dll>
// Import all the names
using namespace System::Collections;
// Now you can use ArrayList without having to qualify it
ArrayList^ pal = gcnew ArrayList();
The System Namespace
The System namespace, defined in mscorlib.dll, contains a lot of fundamental classes that include:
|
The System namespace contains fundamental classes and base classes that define commonly-used value and reference data types, events and event handlers, interfaces, attributes, and processing exceptions. Other classes provide services supporting data type conversion, method parameter manipulation, mathematics, remote and local program invocation, application environment management, and supervision of managed and unmanaged applications. Information for the System namespace is given in the following section (and for other namespaces details and updates, please refer to MSDN or your compiler documentation, only summaries are provided here). As defined in C and C++ Tutorial, a class is a reference type that encapsulates data (constants and fields) and behavior (methods, properties, indexers, events, operators, instance constructors, static constructors, and destructors), and can contain nested types. Class types support inheritance, a mechanism whereby a derived class can extend and specialize a base class. Let explore the classes, interfaces, structures, delegates and enumerations available in System namespace.
System Classes
Class | Description |
Symbol |
|
AccessViolationException | The exception that is thrown when there is an attempt to read or write protected memory. |
ActivationContext | Identifies the activation context for the current application. This class cannot be inherited. |
Activator | Contains methods to create types of objects locally or remotely, or obtain references to existing remote objects. This class cannot be inherited. |
AppDomain | Represents an application domain, which is an isolated environment where applications execute. This class cannot be inherited. |
AppDomainManager | Provides a managed equivalent of an unmanaged host. |
AppDomainSetup | Represents assembly binding information that can be added to an instance of AppDomain. |
AppDomainUnloadedException | The exception that is thrown when an attempt is made to access an unloaded application domain. |
ApplicationException | The exception that is thrown when a non-fatal application error occurs. |
ApplicationId | Contains information used to uniquely identify an application. This class cannot be inherited. |
ApplicationIdentity | Provides the ability to uniquely identify a manifest-activated application. This class cannot be inherited. |
ArgumentException | The exception that is thrown when one of the arguments provided to a method is not valid. |
ArgumentNullException | The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument. |
ArgumentOutOfRangeException | The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method. |
ArithmeticException | The exception that is thrown for errors in an arithmetic, casting, or conversion operation. |
Array | Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime. |
ArrayTypeMismatchException | The exception that is thrown when an attempt is made to store an element of the wrong type within an array. |
AssemblyLoadEventArgs | Provides data for the AssemblyLoad event. |
Attribute | Represents the base class for custom attributes. |
AttributeUsageAttribute | Specifies the usage of another attribute class. This class cannot be inherited. |
BadImageFormatException | The exception that is thrown when the file image of a DLL or an executable program is invalid. |
BitConverter | Converts base data types to an array of bytes, and an array of bytes to base data types. |
Buffer | Manipulates arrays of primitive types. |
CannotUnloadAppDomainException | The exception that is thrown when an attempt to unload an application domain fails. |
CharEnumerator | Supports iterating over a String object and reading its individual characters. This class cannot be inherited. |
CLSCompliantAttribute | Indicates whether a program element is compliant with the Common Language Specification (CLS). This class cannot be inherited. |
Console | Represents the standard input, output, and error streams for console applications. This class cannot be inherited. |
ConsoleCancelEventArgs | Provides data for the Console.CancelKeyPress event. This class cannot be inherited. |
ContextBoundObject | Defines the base class for all context-bound classes. |
ContextMarshalException | The exception that is thrown when an attempt to marshal an object across a context boundary fails. |
ContextStaticAttribute | Indicates that the value of a static field is unique for a particular context. |
Convert | Converts a base data type to another base data type. |
DataMisalignedException | The exception that is thrown when a unit of data is read from or written to an address that is not a multiple of the data size. This class cannot be inherited. |
DBNull | Represents a null value. |
Delegate | Represents a delegate, which is a data structure that refers to a static method or to a class instance and an instance method of that class. |
DivideByZeroException | The exception that is thrown when there is an attempt to divide an integral or decimal value by zero. |
DllNotFoundException | The exception that is thrown when a DLL specified in a DLL import cannot be found. |
DuplicateWaitObjectException | The exception that is thrown when an object appears more than once in an array of synchronization objects. |
EntryPointNotFoundException | The exception that is thrown when an attempt to load a class fails due to the absence of an entry method. |
Environment | Provides information about, and means to manipulate, the current environment and platform. This class cannot be inherited. |
EventArgs | EventArgs is the base class for classes containing event data. |
Exception | Represents errors that occur during application execution. |
ExecutionEngineException | The exception that is thrown when there is an internal error in the execution engine of the common language runtime. This class cannot be inherited. |
FieldAccessException | The exception that is thrown when there is an invalid attempt to access a private or protected field inside a class. |
FileStyleUriParser | A customizable parser based on the File scheme. |
FlagsAttribute | Indicates that an enumeration can be treated as a bit field; that is, a set of flags. |
FormatException | The exception that is thrown when the format of an argument does not meet the parameter specifications of the invoked method. |
FtpStyleUriParser | A customizable parser based on the File Transfer Protocol (FTP) scheme. |
GC | Controls the system garbage collector, a service that automatically reclaims unused memory. |
GenericUriParser | A customizable parser for a hierarchical URI. |
GopherStyleUriParser | A customizable parser based on the Gopher scheme. |
HttpStyleUriParser | A customizable parser based on the HTTP scheme. |
IndexOutOfRangeException | The exception that is thrown when an attempt is made to access an element of an array with an index that is outside the bounds of the array. This class cannot be inherited. |
InsufficientMemoryException | The exception that is thrown when a check for sufficient available memory fails. This class cannot be inherited. |
InvalidCastException | The exception that is thrown for invalid casting or explicit conversion. |
InvalidOperationException | The exception that is thrown when a method call is invalid for the object's current state. |
InvalidProgramException | The exception that is thrown when a program contains invalid Microsoft intermediate language (MSIL) or metadata. Generally this indicates a bug in the compiler that generated the program. |
LdapStyleUriParser | A customizable parser based on the Lightweight Directory Access Protocol (LDAP) scheme. |
LoaderOptimizationAttribute | Used to set the default loader optimization policy for the main method of an executable application. |
LocalDataStoreSlot | Encapsulates a memory slot to store local data. This class cannot be inherited. |
MarshalByRefObject | Enables access to objects across application domain boundaries in applications that support remoting. |
Math | Provides constants and static methods for trigonometric, logarithmic, and other common mathematical functions. |
MemberAccessException | The exception that is thrown when an attempt to access a class member fails. |
MethodAccessException | The exception that is thrown when there is an invalid attempt to access a private or protected method inside a class. |
MissingFieldException | The exception that is thrown when there is an attempt to dynamically access a field that does not exist. |
MissingMemberException | The exception that is thrown when there is an attempt to dynamically access a class member that does not exist. |
MissingMethodException | The exception that is thrown when there is an attempt to dynamically access a method that does not exist. |
MTAThreadAttribute | Indicates that the COM threading model for an application is multithreaded apartment (MTA). |
MulticastDelegate | Represents a multicast delegate; that is, a delegate that can have more than one element in its invocation list. |
MulticastNotSupportedException | The exception that is thrown when there is an attempt to combine two instances of a non-combinable delegate type unless one of the operands is a null reference (Nothing in Visual Basic). This class cannot be inherited. |
NetPipeStyleUriParser | A parser based on the NetPipe scheme for the "Indigo" system. |
NetTcpStyleUriParser | A parser based on the NetTcp scheme for the "Indigo" system. |
NewsStyleUriParser | A customizable parser based on the news scheme using the Network News Transfer Protocol (NNTP). |
NonSerializedAttribute | Indicates that a field of a serializable class should not be serialized. This class cannot be inherited. |
NotFiniteNumberException | The exception that is thrown when a floating-point value is positive infinity, negative infinity, or Not-a-Number (NaN). |
NotImplementedException | The exception that is thrown when a requested method or operation is not implemented. |
NotSupportedException | The exception that is thrown when an invoked method is not supported, or when there is an attempt to read, seek, or write to a stream that does not support the invoked functionality. |
Nullable | Supports a value type that can be assigned a null reference (Nothing in Visual Basic) like a reference type. This class cannot be inherited. |
NullReferenceException | The exception that is thrown when there is an attempt to dereference a null object reference. |
Object | Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy. |
ObjectDisposedException | The exception that is thrown when an operation is performed on a disposed object. |
ObsoleteAttribute | Marks the program elements that are no longer in use. This class cannot be inherited. |
OperatingSystem | Represents information about an operating system, such as the version and platform identifier. This class cannot be inherited. |
OperationCanceledException | The exception that is thrown in a thread upon cancellation of an operation that the thread was executing. |
OutOfMemoryException | The exception that is thrown when there is not enough memory to continue the execution of a program. |
OverflowException | The exception that is thrown when an arithmetic, casting, or conversion operation in a checked context results in an overflow. |
ParamArrayAttribute | Indicates that the method will allow a variable number of arguments in its invocation. This class cannot be inherited. |
PlatformNotSupportedException | The exception that is thrown when a feature does not run on a particular platform. |
Random | Represents a pseudo-random number generator, a device that produces a sequence of numbers that meet certain statistical requirements for randomness. |
RankException | The exception that is thrown when an array with the wrong number of dimensions is passed to a method. |
ResolveEventArgs | Provides data for the TypeResolve, ResourceResolve, and AssemblyResolve events. |
SerializableAttribute | Indicates that a class can be serialized. This class cannot be inherited. |
StackOverflowException | The exception that is thrown when the execution stack overflows by having too many pending method calls. This class cannot be inherited. |
STAThreadAttribute | Indicates that the COM threading model for an application is single-threaded apartment (STA). |
String | Represents text as a series of Unicode characters. |
StringComparer | Represents a string comparison operation that uses specific case and culture-based or ordinal comparison rules. |
SystemException | Defines the base class for predefined exceptions in the System namespace. |
ThreadStaticAttribute | Indicates that the value of a static field is unique for each thread. |
TimeoutException | The exception that is thrown when the time allotted for a process or operation has expired. |
TimeZone | Represents a time zone. |
Type | Represents type declarations: class types, interface types, array types, value types, enumeration types, type parameters, generic type definitions, and open or closed constructed generic types. |
TypeInitializationException | The exception that is thrown as a wrapper around the exception thrown by the class initializer. This class cannot be inherited. |
TypeLoadException | The exception that is thrown when type-loading failures occur. |
TypeUnloadedException | The exception that is thrown when there is an attempt to access an unloaded class. |
UnauthorizedAccessException | The exception that is thrown when the operating system denies access because of an I/O error or a specific type of security error. |
UnhandledExceptionEventArgs | Provides data for the event that is raised when there is an exception that is not handled by the application domain. |
Uri | Provides an object representation of a uniform resource identifier (URI) and easy access to the parts of the URI. |
UriBuilder | Provides a custom constructor for uniform resource identifiers (URIs) and modifies URIs for the Uri class. |
UriFormatException | The exception that is thrown when an invalid Uniform Resource Identifier (URI) is detected. |
UriParser | Parses a new URI scheme. This is an abstract class. |
UriTypeConverter | Converts a String type to a Uri type, and vice versa. |
ValueType | Provides the base class for value types. |
Version | Represents the version number for a common language runtime assembly. This class cannot be inherited. |
WeakReference | Represents a weak reference, which references an object while still allowing that object to be garbage collected. |
Table 1 |