CSharp.Net is a general-purpose, type-safe, object-oriented programming language. The goal of the language is programmer productivity. To this end, the language balances simplicity, expressiveness, and performance. The chief architect of the language since its first version is Anders Hejlsberg (creator of Turbo Pascal and architect of Delphi). The CSharp.Net language is platform-neutral, but it was written to work well with the Microsoft .NET Framework.
CSharp.Net offers high-level abstractions such as query expressions and asynchronous continuations, while at the other end, it provides low-level power through constructs such as custom value types and the optional use of pointers.
CSharp.Net is a rich implementation of the object-orientation paradigm, which includes encapsulation, inheritance, and polymorphism. Encapsulation means creating a boundary around an object, to separate its external (public) behavior from its internal (private) implementation details. The distinctive features of CSharp.Net from an object-oriented perspective are: (1) Unified type system (2) Classes and interfaces (3) Properties, methods, and events
CSharp.Net is primarily a type-safe language, meaning that instances of types can interact only through protocols they define, thereby ensuring each type’s internal consistency. It is also called a strongly typed language because its type rules (whether enforced statically or at runtime) are very strict. For instance, you cannot call a function that's designed to accept an integer with a floating-point number, unless you first explicitly convert the floating-point number to an integer. This helps prevent mistakes. Strong typing also plays a role in enabling CSharp.Net code to run in a sandbox—an environment where every aspect of security is controlled by the host. In a sandbox, it is important that you cannot arbitrarily corrupt the state of an object by bypassing its type rules.
CSharp.Net relies on the runtime to perform automatic memory management. The Common Language Runtime has a garbage collector that executes as part of your program, reclaiming memory for objects that are no longer referenced. This frees programmers from explicitly deallocating the memory for an object, eliminating the problem of incorrect pointers encountered in languages such as C++. CSharp.Net does not eliminate pointers: it merely makes them unnecessary for most programming tasks. For performance-critical hotspots and interoperability, pointers may be used, but they are permitted only in blocks that are explicitly marked unsafe.
CSharp.Net is typically used for writing code that runs on Windows platforms. Although Microsoft standardized the CSharp.Net language through ECMA, the total amount of resources (both inside and outside of Microsoft) dedicated to supporting CSharp.Net on non- Windows platforms is relatively small. This means that languages such as Java are sensible choices when multiplatform support is of primary concern. Having said this, CSharp.Net can be used to write cross-platform code in the following scenarios:
- CSharp.Net code may run on the server and dish up HTML that can run on any platform. This is precisely the case for ASP.NET.
- CSharp.Net code may run on a runtime other than the Microsoft Common Language Runtime. The most notable example is the Mono project, which has its own CSharp.Net compiler and runtime, running on Linux, Solaris, Mac OS X, and Windows.
- CSharp.Net code may run on a host that supports Microsoft Silverlight (supported for Windows and Mac OS X). This technology is analogous to Adobe’s Flash Player.