FACTOID # 12: Americans and Icelanders go to the cinema 5 times a year, on average. The average Japanese person goes only once.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > C Sharp (programming language)
C#
Paradigm structured, imperative, object-oriented
Appeared in 2001 (last revised 2007)
Designed by Microsoft Corporation
Latest release 3/ 19 November 2007
Typing discipline static, strong, both safe and unsafe, nominative
Major implementations .NET Framework, Mono, DotGNU
Dialects 1.0, 1.5 , 2.0 (ECMA), 3.0
Influenced by Delphi (Object Pascal), C++, Java, Modula-3, Eiffel
Influenced Nemerle, D, Java[1], Windows PowerShell

C# (see section on name, pronunciation) is an object-oriented programming language developed by Microsoft as part of the .NET initiative and later approved as a standard by ECMA (ECMA-334) and ISO (ISO/IEC 23270). Anders Hejlsberg leads development of the C# language, which has a procedural, object-oriented syntax based on C++ and includes influences from aspects of several other programming languages (most notably Delphi and Java) with a particular emphasis on simplification. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ... Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. ... In computer science, imperative programming, as opposed to declarative programming, is a programming paradigm that describes computation in terms of a program state and statements that change the program state. ... Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design applications and computer programs. ... This article is about the year. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... Microsoft Corporation (NASDAQ: MSFT), (founded 1975), headquartered in Redmond, Washington, USA, is the worlds largest software company (with over 50,000 employees in various countries, as of May 2004). ... A software release refers to the creation and availability of a new version of a computer software product. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... A nominative type system is a major classes of type system, in which type compatibility and equivalence is determined by explicit declarations and/or the name of the types. ... Look up Implementation in Wiktionary, the free dictionary. ... Microsoft . ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... DotGNU is a part of the GNU Project that aims to provide a free software replacement for the Microsoft . ... A dialect of a programming language is a (relatively small) variation or extension of the language that does not change its intrinsic nature. ... Object Pascal is an object oriented derivative of Pascal mostly known as the primary programming language of Borland Delphi. ... C++ (pronounced ) is a general-purpose programming language. ... Java language redirects here. ... This article or section does not adequately cite its references or sources. ... Eiffel is an ISO-standardized, object-oriented programming language designed to enable programmers efficiently to develop extensible, reusable, reliable software. ... Nemerle is a high-level statically-typed programming language for the . ... D is an object-oriented, imperative system programming language designed by Walter Bright of Digital Mars as a re-engineering of C/C++. He has done this by re-designing many C++ features, and borrowing ideas from other programming languages. ... Java language redirects here. ... Windows PowerShell is an administration focused extensible command line interface (CLI) shell and scripting language product developed by Microsoft. ... C# (see section on name, pronunciation) is an object-oriented programming language developed by Microsoft as part of the . ... Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design applications and computer programs. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... Microsoft Corporation, (NASDAQ: MSFT, HKSE: 4338) is a multinational computer technology corporation with global annual revenue of US$44. ... Microsoft . ... Ecma International is an international, private (membership-based) standards organization for information and communication systems. ... “ISO” redirects here. ... Anders Hejlsberg (born December 1960[1]) is a prominent Danish software engineer who co-designed several popular and commercially successful programming languages and development tools. ... For other uses, see Syntax (disambiguation). ... C++ (pronounced ) is a general-purpose programming language. ... Delphi is the primary programming language of Borland Delphi. ... Java language redirects here. ...

Contents

Design goals

The ECMA standard lists these design goals for C#:

  • C# is intended to be a simple, modern, general-purpose, object-oriented programming language.
  • Because software robustness, durability and programmer productivity are important, the language should include strong type checking, array bounds checking, detection of attempts to use uninitialized variables, source code portability, and automatic garbage collection.
  • The language is intended for use in developing software components that can take advantage of distributed environments.
  • Programmer portability is very important, especially for those programmers already familiar with C and C++.
  • Support for internationalization is very important.
  • C# is intended to be suitable for writing applications for both hosted and embedded systems, ranging from the very large that use sophisticated operating systems, down to the very small having dedicated functions.
  • Although C# applications are intended to be economical with regards to memory and processing power requirements, the language was not intended to compete directly on performance and size with C or assembly language.

In computer programming, bounds checking is the name given to any method of detecting whether or not an index given lies within the limits of an array. ... In computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed (e. ... In computer science, garbage collection (GC) is a form of automatic memory management. ... Software component representations: above the representation used in UML, below the representation commonly used by Microsofts COM objects. ... Internationalization and localization are means of adapting products such as publications or software for non-native environments, especially other nations and cultures. ... A router, an example of an embedded system. ... An operating system (OS) is a software that manages computer resources and provides programmers with an interface used to access those resources. ... The clock rate is the fundamental rate in cycles per second (measured in hertz) at which a computer performs its most basic operations such as adding two numbers or transferring a value from one processor register to another. ... An assembly language is a low-level language for programming computers. ...

History

During the development of .NET, the class libraries were originally written in a language/compiler called Simple Managed C (SMC).[2][3][4] In January 1999, Anders Hejlsberg formed a team to build a new language at the time called Cool.[5] By the time the .NET project was publicly announced at the July 2000 Professional Developers Conference (PDC), the language had been renamed C# and the class libraries and ASP.NET runtime had been ported to C#. Microsoft . ... The Base Class Library (BCL) is a library of types and functionalities available to all languages using the . ... Anders Hejlsberg (born December 1960[1]) is a prominent Danish software engineer who co-designed several popular and commercially successful programming languages and development tools. ... Microsofts Professional Developers Conference (or PDC) is a conference for software developers, normally Windows developers. ... ASP.NET logo ASP.NET is a web application framework marketed by Microsoft that programmers can use to build dynamic web sites, web applications and XML web services. ...


C#'s principal designer and lead architect at Microsoft is Anders Hejlsberg, who was previously involved with the design of Visual J++, Borland Delphi, and Turbo Pascal. In interviews and technical papers he has stated that flaws in most major programming languages (e.g. C++, Java, Delphi, and Smalltalk) drove the fundamentals of the Common Language Runtime (CLR), which, in turn, drove the design of the C# programming language itself. Some argue that C# shares roots in other languages.[6] Anders Hejlsberg (born December 1960[1]) is a prominent Danish software engineer who co-designed several popular and commercially successful programming languages and development tools. ... Visual J++ (pronounced Jay Plus Plus) is Microsofts now discontinued implementation of the Java programming language. ... Delphi has been released in many versions, including older versions which have been released in magazines for non-profit application use For the language Borland Delphi is programmed in, see Object Pascal. ... Turbo Pascal 3. ... C++ (pronounced ) is a general-purpose programming language. ... Java language redirects here. ... Delphi is the primary programming language of Borland Delphi. ... For other uses, see Small talk. ... The Common Language Runtime (CLR) is the virtual machine component of Microsofts . ...


Features

Note: The following description is based on the language standard and other documents listed in the external links section.

By design, C# is the programming language that most directly reflects the underlying Common Language Infrastructure (CLI). Most of C#'s intrinsic types correspond to value-types implemented by the CLI framework. However, the C# language specification does not state the code generation requirements of the compiler: that is, it does not state that a C# compiler must target a Common Language Runtime (CLR), or generate Common Intermediate Language (CIL), or generate any other specific format. Theoretically, a C# compiler could generate machine code like traditional compilers of C++ or FORTRAN; in practice, all existing C# implementations target CLI. C# (see section on name, pronunciation) is an object-oriented programming language developed by Microsoft as part of the . ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... The Common Language Runtime (CLR) is the virtual machine component of Microsofts . ... Common Intermediate Language (CIL, pronounced either sill or kill) (formerly called Microsoft Intermediate Language or MSIL) is the lowest-level human-readable programming language in the Common Language Infrastructure and in the . ...


C# differs from C and C++ in many ways, including:

  • There are no global variables or functions. All methods and members must be declared within classes. It is possible, however, to use static methods/variables within public classes instead of global variables/functions.
  • Local variables cannot shadow variables of the enclosing block, unlike C and C++. Variable shadowing is often considered confusing by C++ texts.
  • C# supports a strict boolean type, bool. Statements that take conditions, such as while and if, require an expression of a boolean type. While C++ also has a boolean type, it can be freely converted to and from integers, and expressions such as if(a) require only that a is convertible to bool, allowing a to be an int, or a pointer. C# disallows this "integer meaning true or false" approach on the grounds that forcing programmers to use expressions that return exactly bool can prevent certain types of programming mistakes such as if (a = b) (use of = instead of ==).
  • In C#, memory address pointers can only be used within blocks specifically marked as unsafe, and programs with unsafe code need appropriate permissions to run. Most object access is done through safe references, which cannot be made invalid. An unsafe pointer can point to an instance of a value-type, array, string, or a block of memory allocated on a stack. Code that is not marked as unsafe can still store and manipulate pointers through the System.IntPtr type, but cannot dereference them.
  • Managed memory cannot be explicitly freed, but is automatically garbage collected. Garbage collection addresses memory leaks. C# also provides direct support for deterministic finalization with the using statement (supporting the Resource Acquisition Is Initialization idiom).
  • Multiple inheritance is not supported, although a class can implement any number of interfaces. This was a design decision by the language's lead architect to avoid complication, avoid dependency hell and simplify architectural requirements throughout CLI.
  • C# is more typesafe than C++. The only implicit conversions by default are those which are considered safe, such as widening of integers and conversion from a derived type to a base type. This is enforced at compile-time, during JIT, and, in some cases, at runtime. There are no implicit conversions between booleans and integers and between enumeration members and integers (except 0, which can be implicitly converted to an enumerated type), and any user-defined conversion must be explicitly marked as explicit or implicit, unlike C++ copy constructors (which are implicit by default) and conversion operators (which are always implicit).
  • Enumeration members are placed in their own namespace.
  • Accessors called properties can be used to modify an object with syntax that resembles C++ member field access. In C++, declaring a member public enables both reading and writing to that member, and accessor methods must be used if more fine-grained control is needed. In C#, properties allow control over member access and data validation.
  • Full type reflection and discovery is available.
  • C# currently (as of 3 June 2008) has 77 reserved words.

In computer science the boolean datatype, sometimes called the logical datatype, is a primitive datatype having two values: one and zero (sometimes called true and false). ... In computer science, garbage collection (GC) is a form of automatic memory management. ... In computer science, a memory leak is a particular kind of unintentional memory consumption by a computer program where the program fails to release memory when no longer needed. ... Resource Acquisition Is Initialization, often referred to by the acronym RAII, is a popular design pattern in C++ and D. The technique combines acquisition and release of resources with initialization and uninitialization of objects. ... Multiple inheritance refers to a feature of object-oriented programming languages in which a class can inherit behaviors and features from more than one superclass. ... Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages. ... In computer science, a programming language is type safe when the language does not permit the programmer to treat a value as a type to which it does not belong. ... For other uses, see Just In Time. ... A copy constructor is a special constructor in the C++ programming language used to create a new object as a copy of an existing object. ... In computer programming, an enumerated type is an abstract data type used to model an attribute that has a specific number of options (or identifiers) such as the suit of a playing card (i. ... A namespace is a context in which a group of one or more identifiers might exist. ... In some object-oriented programming languages, a property is a special sort of class member, intermediate between a field (or data member) and a method. ... In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. ...

Common Type system (CTS)

C# has a unified type system. This unified type system is called Common Type System (CTS). The Common Type System (CTS) is used by every language built on the . ...


A unified type system implies that all types, including primitives such as integers, are subclasses of the System.Object class. For example, every type inherits a ToString() method. For performance reasons, primitive types (and value types in general) are internally allocated on the stack. In computer science, primitive types, as distinct from composite types - are datatypes provided by a programming language as basic building blocks. ... To meet Wikipedias quality standards, this article or section may require cleanup. ...


Categories of Data Types

CTS separates datatypes into two categories:

  • Value Type
  • Reference Type

While value types are those in which the value itself is stored by allocating memory on the stack, reference types are those in which only the address to the location where the value is present, is stored. Value types include integers (short, long), floating-point numbers (float, double), decimal (a base 10 number used for financial calculations), structures, enumerators, booleans and characters while reference types include objects, strings, classes, interfaces and delegates.


User-defined Data Types

C# also allows the programmer to create user-defined value types, using the struct keyword. From the programmer's perspective, they can be seen as lightweight classes. Unlike regular classes, and like the standard primitives, such value types are allocated on the stack rather than on the heap. They can also be part of an object (either as a field or boxed), or stored in an array, without the memory indirection that normally exists for class types. Structs also come with a number of limitations. Because structs have no notion of a null value and can be used in arrays without initialization, they are implicitly initialized to default values (normally by filling the struct memory space with zeroes, but the programmer can specify explicit default values to override this). The programmer can define additional constructors with one or more arguments. This also means that structs lack a virtual method table, and because of that (and the fixed memory footprint), they cannot allow inheritance (but can implement interfaces). In computer science, primitive types — as distinct from composite types — are data types provided by a programming language as basic building blocks. ... In computer science, a call stack is a special stack which stores information about the active subroutines of a computer program. ... A virtual method table, virtual function table, dispatch table, or vtable, is a mechanism used in programming language implementations in order to support dynamic polymorphism, i. ...


Type Casting in C#

Type casting is the process of converting a value belonging to a particular data type (or instance) to another.


Example:

 using System; class Employee { } class ContractEmployee : Employee { } class CastExample5 { public static void Main () { Employee e = new Employee(); Console.WriteLine("e = {0}", e == null ? "null" : e.ToString()); ContractEmployee c = e as ContractEmployee; Console.WriteLine("c = {0}", c == null ? "null" : c.ToString()); } } 

Here, the element e, which is an instance of the class Employee, is type cast as an instance of the class ContractEmployee and stored in element c.


Certain datatypes are incompatible for type casting. For example, an integer value cannot be type-casted into a string though the converse is possible. With regard to user-defined data types, the compiler allows all kinds of type-casting. However, a TypeCastException is thrown at runtime if the datatypes are incompatible.


Boxing and Unboxing

Boxing and unboxing are two new concepts introduced in C#.


Boxing is the method used to convert a value type into a reference type.


Example:

 int foo = 42; // Value type... object bar = foo; // foo is boxed to bar. 

Unboxing is the method used to convert a reference type into a value type.


Example:

 int foo = 42; // Value type. object bar = foo; // foo is boxed to bar. int foo2 = (int)bar; // Unboxed back to value type. 

Boxing and unboxing become important when value types are put into a collection class or taken out of a collection class.


Features of C# 2.0

New features in C# for the .NET SDK 2.0 (corresponding to the 3rd edition of the ECMA-334 standard) are:

  • Partial classes allow class implementation across more than one source file. This permits splitting up very large classes, and is also useful if some parts of a class are automatically generated.

file1.cs: A partial class, or partial type, is a feature of some object oriented computer programming languages in which the declaration of a class may be split across multiple source-code files, or multiple places within a single file. ...

 public partial class MyClass { public MyClass() { // implementation } } 

file2.cs:

 public partial class MyClass { public void SomeMethod() { // implementation } } 
  • Generics or parameterized types. This is a .NET 2.0 feature supported by C#. Unlike C++ templates, .NET parameterized types are instantiated at runtime rather than by the compiler; hence they can be cross-language whereas C++ templates cannot. They support some features not supported directly by C++ templates such as type constraints on generic parameters by use of interfaces. On the other hand, C# does not support non-type generic parameters. Unlike generics in Java, .NET generics use reification to make parameterized types first-class objects in the CLI Virtual Machine, which allows for optimizations and preservation of the type information.[7]
  • Static classes that cannot be instantiated, and that only allow static members. This is similar to the concept of module in many procedural languages.
  • A new form of iterator that provides generator functionality, using a yield return construct similar to yield in Python.
 // Method that takes an iterable input (possibly an array) and returns all even numbers. public static IEnumerable<int> GetEven(IEnumerable<int> numbers) { foreach (int i in numbers) { if (i % 2 == 0) yield return i; } } 
  • Anonymous delegates providing closure functionality.[8]
 public void Foo(object parameter) { // ... ThreadPool.QueueUserWorkItem(delegate { // anonymous delegates have full access to local variables of the enclosing method if (parameter == ...) { // ...  } // ... }); } 
 string status = string.Empty; public string Status { get { return status; } // anyone can get value of this property, protected set { status = value; } // but only derived classes can change it } 
  • Nullable value types (denoted by a question mark, e.g. int? i = null;) which add null to the set of allowed values for any value type. This provides improved interaction with SQL databases, which can have nullable columns of types corresponding to C# primitive types: an SQL INTEGER NULL column type directly translates to the C# int?.

Nullable types received an eleventh-hour improvement at the end of August 2005, mere weeks before the official launch, to improve their boxing characteristics: a nullable variable which is assigned null is not actually a null reference, but rather an instance of struct Nullable<T> with property HasValue equal to false. When boxed, the Nullable instance itself is boxed, and not the value stored in it, so the resulting reference would always be non-null, even for null values. The following code illustrates the corrected flaw: Generic programming is a style of computer programming where algorithms are written in an extended grammar and are made adaptable by specifying variable parts that are then somehow instantiated later by the compiler with respect to the base grammar. ... Reification, in the context of object-oriented programming, is the implementation of an abstract behavior. ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... It has been suggested that this article or section be merged into Modularity (programming). ... In computer science, an iterator is an object which allows a programmer to traverse through all the elements of a collection, regardless of its specific implementation. ... In computer science, a generator is a special routine that can be used to control the iteration behaviour of a loop. ... The syntax of the Python programming language is the set of rules that defines how a Python program will be written and interpreted (by both the runtime system and by human readers). ... In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables. ... A covariant type operator in a type system preserves the ordering ≤ of types. ... A delegate is a form of type-safe function pointer used in the . ... In most programming languages object references or pointers can be set to NULL, meaning that that the pointer points to nowhere or that no object is assigned. ... The Eleventh Hour is a figure of speech referring to the last moments before a deadline, or meant to imply that a decisive or final moment is near. ... In computer science, an object type (a. ...

 int? i = null; object o = i; if (o == null) Console.WriteLine("Correct behaviour - runtime version from September 2005 or later"); else Console.WriteLine("Incorrect behaviour - pre-release runtime (from before September 2005)"); 

When copied into objects, the official release boxes values from Nullable instances, so null values and null references are considered equal. The late nature of this fix caused some controversy[citation needed], since it required core-CLR changes affecting not only .NET2, but all dependent technologies (including C#, VB, SQL Server 2005 and Visual Studio 2005). The Common Language Runtime (CLR) is the virtual machine component of Microsofts . ...

  • Coalesce operator: (??) returns the first of its operands which is not null (or null, if no such operand exists):
 object nullObj = null; object obj = new Object(); return nullObj ?? obj; // returns obj 

The primary use of this operator is to assign a nullable type to a non-nullable type with an easy syntax:

 int? i = null; int j = i ?? 0; // Unless i is null, initialize j to i. Else (if i is null), initialize j to 0. 

Features of C# 3.0

C# 3.0 is the current version, and was released on 19 November 2007 as part of .NET Framework 3.5. It includes new features inspired by functional programming languages such as Haskell and ML, and is driven largely by the introduction of the Language Integrated Query (LINQ) pattern to the Common Language Runtime.[10] is the 323rd day of the year (324th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ... Haskell is a standardized purely functional programming language with non-strict semantics, named after the logician Haskell Curry. ... ML is a general-purpose functional programming language developed by Robin Milner and others in the late 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage as it was conceived to develop proof tactics in the LCF theorem prover (the language of... Language intergrated query (LINQ) is a Microsoft project that aims to add a native querying syntax to C# and VB.Net. ...

  • Language Integrated Query:[11] "from, where, select" context-sensitive keywords allowing queries across SQL, XML, collections, and more. These are treated as keywords in the LINQ context, but their addition won't break existing variables named from, where, or select.
  • Object initializers: Customer c = new Customer(); c.Name = "James"; can be written Customer c = new Customer { Name="James" };
  • Collection initializers: MyList list = new MyList(); list.Add(1); list.Add(2); can be written as MyList list = new MyList { 1, 2 }; (assuming that MyList implements System.Collections.IEnumerable and has a public Add method[12])
  • Anonymous types: var x = new { Name = "James" }
  • Local variable type inference: var x = "hello"; is interchangeable with string x = "hello";. More than just syntactic sugar, this feature is required for the declaration of anonymous typed variables.
  • Lambda expressions: listOfFoo.Where(delegate(Foo x) { return x.Size > 10; }) can be written listOfFoo.Where(x => x.Size > 10);
  • Compiler-inferred translation of Lambda expressions to either strongly-typed function delegates or strongly-typed expression trees
  • Automatic properties: The compiler will automatically generate a private instance variable and the appropriate getter and setter given code such as: public string Name { get; private set; }
  • Extension methods (adding methods to classes by including the this keyword in the first parameter of a method on another static class):
 public static class IntExtensions { public static void PrintPlusOne(this int x) { Console.WriteLine(x + 1); } } int foo = 0; foo.PrintPlusOne(); 
  • Partial methods: Allow codegenerators to generate method declarations as extension points that are only included in the source code compilation if someone actually implements it in another portion of a partial class.[13]

C# 3.0 was unveiled at the 2005 Professional Developers Conference.[14] It is not currently standardized by any standards organisation, though it is expected that it will eventually become an ECMA and then ISO standard, as did its predecessors. Language intergrated query (LINQ) is a Microsoft project that aims to add a native querying syntax to C# and VB.Net. ... Anonymous types are a feature of the C# 3. ... Type inference is a feature present in some strongly statically typed programming languages. ... Syntactic sugar is a term coined by Peter J. Landin for additions to the syntax of a computer language that do not affect its functionality but make it sweeter for humans to use. ... In computer science, the lambda calculus is a formal system designed to investigate function definition, function application, and recursion. ... In computer science, the lambda calculus is a formal system designed to investigate function definition, function application, and recursion. ... A parse tree or concrete syntax tree is a tree that represents the syntactic structure of a string according to some formal grammar. ... // One of the features of C# 3. ... Microsofts Professional Developers Conference (or PDC) is a conference for software developers, normally Windows developers. ... Standards Organizations are bodies, organizations and institutions that produce, and in some cases measure, standards. ...


Microsoft has emphasized that the new language features of C# 3.0 will be available without any changes to the runtime. This means that C# 2.0 and 3.0 will be binary-compatible (CLI implementations compatible with 2.0 are able to run 3.0 applications directly).


Although the new features may only slightly change simple in-memory queries, such as List.FindAll or List.RemoveAll, the pattern used by LINQ allows for significant extension points to enable queries over different forms of data, both local and remote.


Preprocessor

C# features "preprocessor directives"[15] (though it does not have an actual preprocessor) based on the C preprocessor that allow programmers to define symbols but not macros. Conditionals such as #if, #endif, and #else are also provided. Directives such as #region give hints to editors for code folding. The C preprocessor (cpp) is the preprocessor for the C programming language. ... A symbol or (in many senses) token is a representation of something — an idea, object, concept, quality, etc. ... Code folding is a feature of some text editors, program source code editors and IDEs that allows the user to selectively hide and display sections of a currently-edited file as a part of routine edit operations. ...


Code Comments

C# utilizes a double forward slash (//) to indicate the rest of the line is a comment. Comments can also be indicated using a starting forward slash/asterisk (/*) and ending asterisk/forward slash (*/).

 public class Foo { // a comment public static void Bar(int firstParam) {} //Also a comment } public class FooBar { /* a comment */ public static void BarFoo(int firstParam) {} /* Also a comment */ } 

Multi-line comments can also be indicated by a starting forward slash/asterisk (/*) and ending asterisk/forward slash (*/).

 public class Foo { /* A Multi-Line comment */ public static void Bar(int firstParam) {} } 

XML documentation system

C#'s documentation system is similar to Java's Javadoc, but based on XML. Two methods of documentation are currently supported by the C# compiler. Javadoc is a computer software tool from Sun Microsystems for generating API documentation into HTML format from Java source code. ... The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language that supports a wide variety of applications. ... A diagram of the operation of a typical multi-language, multi-target compiler. ...


Single-line comments, such as those commonly found in Visual Studio generated code, are indicated on a line beginning with ///. Microsoft Visual Studio is Microsofts flagship software development product for computer programmers. ...

 public class Foo { /// <summary>A summary of the method.</summary> /// <param name="firstParam">A description of the parameter.</param> /// <remarks>Remarks about the method.</remarks> public static void Bar(int firstParam) {} } 

Multi-line comments, while defined in the version 1.0 language specification, were not supported until the .NET 1.1 release.[16] These comments are designated by a starting forward slash/asterisk/asterisk (/**) and ending asterisk/forward slash (*/)[17]. Microsoft . ...

 public class Foo { /** <summary>A summary of the method.</summary> * <param name="firstParam">A description of the parameter.</param> * <remarks>Remarks about the method.</remarks> */ public static void Bar(int firstParam) {} } 

Note there is some stringent criteria regarding white space and XML documentation when using the forward slash/asterisk/asterisk (/**) technique.


This code block:

 /** * <summary> * A summary of the method.</summary>*/ 

produces a different XML comment than this code block[17]:

 /** * <summary> A summary of the method.</summary>*/ 

Syntax for documentation comments and their XML markup is defined in a non-normative annex of the ECMA C# standard. The same standard also defines rules for processing of such comments, and their transformation to a plain XML document with precise rules for mapping of CLI identifiers to their related documentation elements. This allows any C# IDE or other development tool to find documentation for any symbol in the code in a certain well-defined way. The Extensible Markup Language (XML) is a general-purpose markup language. ... Ecma International is an international, private (membership-based) standards organization for information and communication systems. ... The Extensible Markup Language (XML) is a general-purpose markup language. ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... An integrated development environment (IDE), also known as integrated design environment and integrated debugging environment, is a programming environment that has been packaged as an application program,that assists computer programmers in developing software. ...


Future development

Future versions of C# are under development, though their exact specification is not finalized. It will feature enhanced support for Reflection as well as an enhanced Microsoft Office interop library. It will also integrate with the Dynamic Language Runtime and allow C# to call into code written in DLR-based languages (such as IronPython and IronRuby) using a syntax similar to what C# uses for CLR methods and objects. The dynamic keyword is being considered to demarcate a block where dynamic lookup will be available.[18] Image File history File links Gnome_globe_current_event. ... Image File history File links Nuvola_apps_kpager. ... In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. ... Microsoft Office is an office suite from Microsoft for Microsoft Windows and Apple Mac OS X operating systems. ... The Dynamic Language Runtime (DLR) from Microsoft is a ongoing effort to bring a set of services that run on top of the CLR and provides language services for several different dynamic languages. ... IronPython is an implementation of the Python programming language, targeting . ... IronRuby is an implementation of the Ruby programming language targeting Microsoft . ...


Libraries

The C# specification details a minimum set of types and class libraries that the compiler expects to have available and they define the basics required. In practice, C# is most often used with some implementation of the Common Language Infrastructure (CLI), which is standardized as ECMA-335 Common Language Infrastructure (CLI). Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ...


Hello world example

The following is a very simple C# program, a version of the classic "Hello world" example: A hello world program is a computer program that prints out Hello, world! on a display device. ...

 class ExampleClass { static void Main() { System.Console.WriteLine("Hello, world!"); } } 

The effect is to write the following text to the output console:

 Hello, world! 

Each line has a purpose:

 class ExampleClass 

Above is a class definition. Everything between the following pair of braces describes ExampleClass. In object-oriented programming, a class is a programming language construct used to group related fields and methods. ...

 static void Main() 

This declares the class member method where the program begins execution. The .NET runtime calls the Main method. (Note: Main may also be called from elsewhere, e.g. from the code Main() in another method of ExampleClass.) The static keyword makes the method accessible without an instance of ExampleClass. Each console application's Main entry point must be declared static. Otherwise, the program would require an instance, but any instance would require a program. To avoid that irresolvable circular dependency, C# compilers processing console applications (like above) report an error if there is no static Main method. The void keyword declares that Main has no return value (see also side effect). Circular dependencies is a situation which occurs in object oriented programming when two or more objects point towards each other in a circular fashion. ... In computer programming, a return statement causes execution to leave the current subroutine and resume at the point the subroutine was called -- this is called the return address. ... In computer science, a function is said to produce a side effect if it modifies some state other than its return value. ...

 System.Console.WriteLine("Hello, world!"); 

This line writes the output. Console is a static class in the System namespace. It provides an interface to the standard input, output, and error streams for console applications. The program calls the Console method WriteLine, which displays on the console a line with the argument, the string "Hello, world!".


Standardization

In August, 2000, Microsoft Corporation, Hewlett-Packard and Intel Corporation co-sponsored the submission of specifications for C# as well as the Common Language Infrastructure (CLI) to the international standardization organization ECMA. In December 2001 , ECMA released ECMA-334 C# Language Specification. C# became an ISO standard in 2003 (ISO/IEC 23270:2006 - Information technology -- Programming languages -- C#). ECMA had previously adopted equivalent specifications as the 2nd edition of C#, in December, 2002. Ecma International - European association for standardising information and communication systems came into existence in 1994, when the European Computer Manufacturers Association (ECMA) changed its name in order to reflect the international activities of the organisation (the long form of ECMA was dropped then, and capitalization changed to reflect this). ... ISO has many meanings: Iso is the stem of the Latin transliteration of the Greek word ίσος (ísos, meaning equal). The iso- prefix in English derives from this and means equality or similarity. ...


In June 2005, ECMA approved edition 3 of the C# specification, and updated ECMA-334. Additions included partial classes, anonymous methods, nullable types, and generics (similar to C++ templates). Generic programming is a style of computer programming where algorithms are written in an extended grammar and are made adaptable by specifying variable parts that are then somehow instantiated later by the compiler with respect to the base grammar. ... In computer programming, templates are a feature of the C++ programming language that allow code to be written without consideration of the data type with which it will eventually be used. ...


In July 2005, ECMA submitted the standards and related TRs to ISO/IEC JTC 1 via the latter's Fast-Track process. This process usually takes 6-9 months.


Criticism

Performance

C# programs, like all programs written for the .NET and other virtual machine environments such as Java, tend to require more system resources than functionally similar applications that access machine resources more directly.[19][20] In computer science, a virtual machine is software that creates a virtualized environment between the computer platform and its operating system, so that the end user can operate software on an abstract machine. ...


Platform

Microsoft's current .NET implementation is only available on Windows, though this relates more to the availability of some non-standard libraries developed by Microsoft, rather than the C# language itself. There are other environments that support C# programs on Windows, Linux, BSD or Mac OS X, and while some provide a complete implementation of the C# language and CLI, none provide a complete implementation of every library available from Microsoft. See Mono[21] and DotGNU[22] In November of 2002 Microsoft released a 1.0 CLI implementation that worked on Free BSD and Mac OS X 10.2, but the next versions were only made available on Windows. Windows redirects here. ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... DotGNU is a part of the GNU Project that aims to provide a free software replacement for the Microsoft . ...


Licensing

Although the C# language definition and the CLI are standardized under ISO and ECMA standards, the CLI is only a part of Microsoft's Base Class Library, which also contains non-standardized classes that are used by many C# programs (some extended IO, User Interface, Web services, ...). Furthermore, parts of the BCL have been patented by Microsoft,[23][24] which may deter independent implementations of the full framework, as only the standardized portions have RAND protection from patent claims. Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... ISO has many meanings: Iso is the stem of the Latin transliteration of the Greek word ίσος (ísos, meaning equal). The iso- prefix in English derives from this and means equality or similarity. ... ECMA is short for European Computer Manufacturers Association (Name of Ecma International until 1994) East Coast Music Awards European Carton Makers Association[1] ECMAScript This is a disambiguation page — a navigational aid which lists other pages that might otherwise share the same title. ... The Base Class Library (BCL) is a library of types and functionalities available to all languages using the . ... Energy Input: The energy placed into a reaction. ... This API is a part of . ... Web services architecture A Web service (also Web Service) is defined by the W3C as a software system designed to support interoperable Machine to Machine interaction over a network. ... Reasonable and Non Discriminatory Licensing (RAND) is a term for a type of licensing typically used during standardisation processes. ...


Implementations

The de facto standard implementation of the C# language is Microsoft's C# compiler, Visual C#. To meet Wikipedias quality standards, this article may require cleanup. ...


Alternative C# compilers are:

  • The Mono project provides an open source C# compiler, a complete open source implementation of the Common Language Infrastructure including the required framework libraries as they appear in the ECMA specification, and a nearly complete[citation needed] implementation of the remaining Microsoft proprietary .NET class libraries (libraries not documented or included in the ECMA specification but are included in Microsoft's standard .NET Framework distribution).
  • The DotGNU project also provides an open source C# compiler, a nearly complete implementation of the Common Language Infrastructure including the required framework libraries as they appear in the ECMA specification, and subset of some of the remaining Microsoft proprietary .NET class libraries (libraries not documented or included in the ECMA specification but are included in Microsoft's standard .NET Framework distribution).

The Shared Source Common Language Infrastructure (SSCLI), previously codenamed Rotor, is Microsofts shared source implementation of the CLI, the core of . ... Shared source is Microsoft’s framework for sharing computer program source code with individuals and organizations. ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... DotGNU is a part of the GNU Project that aims to provide a free software replacement for the Microsoft . ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ...

Language name

C sharp typographical convention
C sharp typographical convention
C sharp musical note
C sharp musical note

The name "C sharp" was inspired from musical notation where a sharp indicates that the written note should be made a half-step higher in pitch.[25] This is similar to the language name of C++, where the ++ symbol indicates that a variable should be incremented by 1. Image File history File links This is a lossless scalable vector image. ... Image File history File links This is a lossless scalable vector image. ... Image File history File links This is a lossless scalable vector image. ... Image File history File links This is a lossless scalable vector image. ... This article or section does not adequately cite its references or sources. ... Figure 1. ... C++ (pronounced ) is a general-purpose programming language. ...


Due to technical limitations of display (fonts, browsers, etc.) and the fact that the sharp symbol (, U+266F, MUSIC SHARP SIGN) is not present on the standard keyboard, the Number sign (#, U+0023, NUMBER SIGN) was chosen to represent the sharp symbol in the written name of the programming language.[26] This convention is reflected in the ECMA-334 C# Language Specification.[27] However, when it is practical to do so (for example, in advertising or in box art[28]), Microsoft will use the intended musical sharp symbol. Figure 1. ... Number sign is one name for the symbol #, and is the preferred Unicode name for the codepoint represented by that glyph. ...


The "sharp" suffix has been used by a number of other .NET languages that are variants of existing languages, including J# (Microsoft's implementation of Java), A# (from Ada), and F# (presumably from System F, the type system used by the ML family).[29] The original implementation of Eiffel for .NET was called Eiffel#, a name since retired since the full Eiffel language is now supported. The suffix is also sometimes used for libraries, such as Gtk# (a .NET wrapper for GTK+ and other GNOME libraries), Cocoa# (a wrapper for Cocoa) and Qt# (a .NET language binding for the Qt toolkit). The J# (pronounced J-sharp) programming language is a transitional language for programmers of Suns Java and Microsofts J++ languages, so they may use their existing knowledge, and applications on Microsofts . ... A# is a port of the Ada programming language to the Microsoft . ... Ada is a structured, statically typed imperative computer programming language designed by a team led by Jean Ichbiah of CII Honeywell Bull during 1977–1983. ... System F is a typed lambda calculus. ... ML is a general-purpose functional programming language developed by Robin Milner and others in the late 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage as it was conceived to develop proof tactics in the LCF theorem prover (the language of... Eiffel is an ISO-standardized, object-oriented programming language designed to enable programmers efficiently to develop extensible, reusable, reliable software. ... Gtk#, a GUI Toolkit, is a set of . ... In computer programming, the adapter design pattern (sometimes referred to as the wrapper pattern) adapts one interface for a class into one that a client expects. ... GTK+, or the GIMP Toolkit, is one of the two most popular widget toolkits for the X Window System for creating graphical user interfaces. ... This article is about the mythical creature. ... A Cocoa application being developed using Xcode. ... Qt or QT may stand for: QuickTime a multimedia technology from Apple Computer A quart, a measure of volume within traditional systems of units, equal to 2 pints A quarter, a unit of mass in Imperial units, equal to 2 stones or a quarter of a long hundredweight; one quarter...


See also

  • C# Syntax

. The substitution or omission of a # sign is because of technical restrictions. ...

Environments and tools

Microsoft Visual Studio is Microsofts flagship software development product for computer programmers. ... SharpDevelop is a free and open source IDE for the C#, Visual Basic . ... Windows redirects here. ... MonoDevelop is a popular, open source integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the Mono and Microsoft . ... This article is about operating systems that use the Linux kernel. ... Morfik Technology Pty Ltd. ... Baltie is an educational programming language used as a learning aid for beginning programmers. ... Borland Software Corporation is a software company headquartered in Austin, Texas. ... Turbo C# is a Integrated Development Environment (IDE), created by Borland, which is come in two versions, a free Explorer edition which fixed IDE targeted towards student, amateur, and hobbyist programmers, and a Professional edition which is an extensible and customizable IDE, for more professional development. ...

Related languages

Cω (pronounced C omega and usually written as Cw or Comega language) is a free extension to the C# programming language, developed by the WebData team in SQL Server in collaboration with Microsoft Research in the UK and Redmond. ... Spec# is a programming language with specification language features that extends the capabilities of the C# programming language with Eiffel-like contracts, including object invariants, preconditions and post-conditions. ... Sing♯ is a concurrent programming language that is a superset of the Spec♯ programming language; in turn, Spec♯ is an extension of the C♯ programming language. ...

Comparisons

The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historicaal ones, in alphabetical order. ... Programming languages are used for controlling the behavior of a machine (often a computer). ...

References

  1. ^ In Java 5.0, several features (foreach, autoboxing, varargs, attributes and enums) were introduced, after proving themselves useful in the C# language (with only minor differences in name and implementation). [1][2][3]
  2. ^ Jason Zander on the history of .NET. Retrieved on 2008-02-21.
  3. ^ C# 3.0 New Features. Retrieved on 2008-06-08.
  4. ^ Scott Guthrie on the origins of ASP.Net. Retrieved on 2008-02-21.
  5. ^ langnetsymposium.com
  6. ^ Programming language history chart.
  7. ^ Content not found
  8. ^ Anonymous Methods (C#)
  9. ^ Covariance and Contravariance in Delegates (C#)
  10. ^ Tim Anderson (November 14, 2006). C# pulling ahead of Java - Lead architect paints rosy C# picture. Reg Developer. The Register. Retrieved on 2007-01-20.
  11. ^ LINQ (English). Microsoft MSDN (2007). Retrieved on 2007-08-13.
  12. ^ The Mellow Musings of Dr. T : What is a collection?
  13. ^ Partial Methods. Retrieved on 2007-10-06.
  14. ^ Visual C# 3.0
  15. ^ C# Preprocessor Directives
  16. ^ Anson Horton (2007-09-11). C# XML documentation comments FAQ. Retrieved on 2007-12-11.
  17. ^ a b http://msdn2.microsoft.com/en-us/library/5fz4y783(VS.71).aspx Delimiters for Documentation Tags
  18. ^ Charlie Calvert. Dynamic Lookup. Retrieved on 2008-03-12.
  19. ^ Microbenchmarking C++, C#, and Java: Average results without arithmetic.. Dr. Dobb's Journal (2005-07-01). Retrieved on 2007-12-29.
  20. ^ Computer Language Benchmarks Game. Retrieved on 2007-12-29.
  21. ^ Mono Project Roadmap: Mono_1.2. Novell (May 2007). Retrieved on 2007-11-02. “Mono 2.0 will mark the time when the class libraries have complete support for the new features in the 2.0 edition of the framework.
  22. ^ Portable.NET status. dotgnu.org. Retrieved on 2007-12-29.
  23. ^ See .NET Framework
  24. ^ See Mono and Microsoft’s patents
  25. ^ C#/.NET History Lesson (2008-03-25).
  26. ^ Microsoft C# FAQ. Retrieved on 2008-03-25.
  27. ^ Standard ECMA-334 C# Language Specification. 4th edition (June 2006).
  28. ^ Microsoft.com
  29. ^ Microsoft F# FAQ.

Java language redirects here. ... For each (or foreach) is a computer language idiom for traversing items in a collection. ... In computer science, an object type (a. ... In computer programming, a variadic function is a function of variable arity; that is, one which can take different numbers of arguments. ... Annotation is extra information associated with a particular point in a document or other piece of information. ... In computer programming, an enumerated type is an abstract data type used to model an attribute that has a specific number of options (or identifiers) such as the suit of a playing card (i. ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 52nd day of the year in the Gregorian calendar. ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 159th day of the year (160th in leap years) in the Gregorian calendar. ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 52nd day of the year in the Gregorian calendar. ... is the 318th day of the year (319th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... Current logo of The Register. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 20th day of the year in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 225th day of the year (226th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 279th day of the year (280th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 254th day of the year (255th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 345th day of the year (346th in leap years) in the Gregorian calendar. ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 71st day of the year (72nd in leap years) in the Gregorian calendar. ... Dr. Dobbs Journal (DDJ) is a monthly journal published in the United States by CMP Media. ... Year 2005 (MMV) was a common year starting on Saturday (link displays full calendar) of the Gregorian calendar. ... is the 182nd day of the year (183rd in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 363rd day of the year (364th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 363rd day of the year (364th in leap years) in the Gregorian calendar. ... May 2007 is the fifth month of that year. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 306th day of the year (307th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ... is the 363rd day of the year (364th in leap years) in the Gregorian calendar. ... Microsoft . ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 84th day of the year (85th in leap years) in the Gregorian calendar. ... 2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance with the Gregorian calendar. ... is the 84th day of the year (85th in leap years) in the Gregorian calendar. ...

External links

Wikibooks
Wikibooks has a book on the topic of
Image File history File links Wikibooks-logo-en. ... Wikibooks logo Wikibooks, previously called Wikimedia Free Textbook Project and Wikimedia-Textbooks, is a wiki for the creation of books. ... “PDF” redirects here. ... MiB redirects here. ... Microsoft . ... The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. ... The Base Class Library (BCL) is a library of types and functionalities available to all languages using the . ... The Common Language Runtime (CLR) is the virtual machine component of Microsofts . ... Code access security, in the Microsoft . ... For the counterpart to assembly language in the Microsoft . ... . ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... Visual overview of the Common Language Infrastructure (CLI) The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft . ... The Common Type System (CTS) is used by every language built on the . ... Common Intermediate Language (CIL, pronounced either sill or kill) (formerly called Microsoft Intermediate Language or MSIL) is the lowest-level human-readable programming language in the Common Language Infrastructure and in the . ... The Virtual Execution System(VES) provides an environment for executing managed code. ... Visual Basic . ... C++/CLI (Common Language Infrastructure) is the newer language specification due to supersede Managed Extensions for C++. Completely reviewed to simplify the older Managed C++ syntax, it provides much more clarity over code readability than Managed C++. C++/CLI is standardized by ECMA. It is currently only available on Visual... It has been suggested that this article or section be merged with Managed C Plus Plus. ... The J# (pronounced J-sharp) programming language is a transitional language for programmers of Suns Java and Microsofts J++ languages, so they may use their existing knowledge, and applications on Microsofts . ... JScript . ... A# is a port of the Ada programming language to the Microsoft . ... Boo is an object oriented, statically typed programming language developed starting in 2003, which seeks to make use of the Common Language Infrastructure support for Unicode, internationalization and web style applications, while using a Python-inspired syntax and a special focus on language and compiler extensibility. ... IronLisp is an implementation of the Lisp programming language targeting Microsoft . ... IronPython is an implementation of the Python programming language, targeting . ... IronRuby is an implementation of the Ruby programming language targeting Microsoft . ... Nemerle is a high-level statically-typed programming language for the . ... This article is being considered for deletion in accordance with Wikipedias deletion policy. ... P# is a Prolog (logic programming language) interpreter written for the Common Language Infrastructure. ... Windows PowerShell is an administration focused extensible command line interface (CLI) shell and scripting language product developed by Microsoft. ... In Microsoft Windows terminology, managed code is computer instructions — that is, code — executed by a CLI-compliant virtual machine, such as Microsofts . ... A software framework is a reusable design for a software system (or subsystem). ... This subsystem is a part of . ... This subsystem is a part of . ... This subsystem is a part of . ... It has been suggested that this article or section be merged with Software componentry. ... ADO.NET is a set of computer software components that can be used by programmers to access data and data services. ... The ADO.NET Entity Framework, part of ADO.NET components of the . ... ASP.NET logo ASP.NET is a web application framework marketed by Microsoft that programmers can use to build dynamic web sites, web applications and XML web services. ... ASP.NET AJAX, formerly code-named Atlas, is a set of extensions to ASP.NET developed by Microsoft for implementing Ajax functionality. ... The ASP.NET MVC Framework is a Model-view-controller framework which Microsoft is adding to ASP.NET. It allows an application to be built as a composition of three roles: Model, View and Controller. ... . ... Language intergrated query (LINQ) is a Microsoft project that aims to add a native querying syntax to C# and VB.Net. ... The Windows Cardspace UI This subsystem is a part of . ... This API is a part of . ... Extensible Application Markup Language (XAML, pronounced zammel ()) by Microsoft is a declarative XML-based language used to initialize structured values and objects. ... Deployment of a ClickOnce application ClickOnce is a Microsoft technology for deploying Windows Forms or Windows Presentation Foundation-based software, also called Smart clients. ... The Dynamic Language Runtime (DLR) from Microsoft is a ongoing effort to bring a set of services that run on top of the CLR and provides language services for several different dynamic languages. ... Parallel FX Library (PFX) is a managed concurrency library being developed by a collaboration between Microsoft Research and the CLR team at Microsoft for inclusion with a future revision of the . ... Parallel FX Library (PFX) is a managed concurrency library being developed by a collaboration between Microsoft Research and the CLR team at Microsoft for inclusion with a future revision of the . ... Task Parallel Library (TPL, also referred to as Parallel FX Library) is a managed concurrency library being developed by a collaboration between Microsoft Research and the CLR team at Microsoft for inclusion with a future revision of the . ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... The Microsoft . ... The Microsoft . ... . ... DotGNU Portable . ... Microsoft Silverlight is a web browser plugin that provides support for rich internet applications such as animation, vector graphics and audio-video playback. ... The Shared Source Common Language Infrastructure (SSCLI), previously codenamed Rotor, is Microsofts shared source implementation of the CLI, the core of . ... This is a comparison of the C# programming language with the Java programming language. ... The original . ... This is a comparison of the . ... Microsoft Codename Acropolis, available as a release, is a set of tools and components that can be used to build . ... Microsoft Codename Jasper is an ADO.NET incubation project being developed by Microsoft which aims for simpler integration between the data access layer and the presentation layer in an application. ... Microsoft Visual Studio is Microsofts flagship software development product for computer programmers. ...

  Results from FactBites:
 
Programming Language C Sharp Introduction (306 words)
C# has its roots in the C family of languages and will be immediately familiar to C, C++, and Java programmers.
Many programming languages pay little attention to this issue, and, as a result, programs written in those languages break more often than necessary when newer versions of dependent libraries are introduced.
Aspects of C#'s design that were directly influenced by versioning considerations include the separate virtual and override modifiers, the rules for method overload resolution, and support for explicit interface member declarations.
C Sharp programming language (328 words)
C# (pronounced "see sharp") is an object-oriented programming language developed by Microsoft Corporation as part of their.NET initiative.
Unlike languages such as C and C++, C# does not compile to binary code, which can be executed directly by the target computer.
When the program is executed, the.NET framework JITs the intermediate code into machine language as it is run.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.