C sharp

Le C# est un langage de programmation orienté objet à typage fort, créé par la société Microsoft, et surtout un de ses employés, Anders Hejlsberg, le créateur du langage Delphi.



Catégories :

Langage de programmation - Langage orienté objet - Norme ISO - Norme ECMA - .NET Framework - API Microsoft

Recherche sur Google Images :


Source image : www.di-arezzo.com
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • Il est particulièrement proche du Java dont il reprend la syntaxe générale mais aussi les ... délégués, exceptions, ne sont que des moyens explicites d'exploiter les ... Les pointeurs ne peuvent pointer que sur des types de valeurs, les types objets... (source : iniplus)
C#
Apparu en 2001 (dernière révision en 2007)
Auteur Microsoft Corporation
Paradigme structuré, imperatif, orienté objet
Typage statique, fort, nominatif
Dialectes 1.0, 1.5, 2.0 (ECMA)
Implémentations Microsoft. NET, Mono

Le C# (prononcé [siː. ʃɑːp]) est un langage de programmation orienté objet à typage fort, créé par la société Microsoft, et surtout un de ses employés, Anders Hejlsberg, le créateur du langage Delphi.

Il a été créé pour que la plate-forme Microsoft. NET soit pourvue d'un langage permettant d'utiliser toutes ses capacités. Il est particulièrement proche du Java dont il reprend la syntaxe générale mais aussi les concepts (la syntaxe reste cependant assez comparable à celles de langages tels que le C++ et le C). Un ajout notable à Java est la possibilité de surcharge des opérateurs, inspirée du C++. Cependant, l'implémentation de la redéfinition est plus proche de celle du Pascal Objet.

Plate-forme d'exécution

Capacités du langage

Le C# est , d'une certaine manière, le langage de programmation qui reflète le mieux l'architecture Microsoft. NET qui fait fonctionner l'ensemble des applications. NET, et en est donc extrêmement dépendant. Les types natifs correspondent à ceux de . NET, les objets sont automatiquement nettoyés par un ramasse-miettes, et énormément de mécanismes comme les classes, interfaces, délégués, exceptions, ne sont que des moyens explicites d'exploiter les fonctionnalités de la bibliothèque. NET. Pour achever de marquer cette dépendance, le CLR (Common Language Runtime) est obligatoire pour exécuter des applications rédigées en C#, comme l'est la JVM (Java Virtual Machine ou Machine virtuelle Java) pour des applications Java.

Le langage compte un certain nombre de changements comparé au C/C++ ; On notera spécifiquement les points suivants :

Capacités introduites avec C# 2.0

Microsoft mit à disposition du public en octobre 2005, après une longue période de beta-tests, la version 2.0 de la bibliothèque. NET, accompagnée d'une nouvelle version de la quasi-totalité des outils associés. C# ne fait pas exception à la règle et sort par conséquent en version 2.0, avec les ajouts suivants :

À titre de référence, les spécifications complètes des nouveautés introduites dans la version 2.0 sont disponibles dans les liens externes.

Anders Hejlsberg, le père de Delphi, s'est exprimé sur l'implémentation des génériques dans C#, Java et C++ dans cette interview (en) .

La fonctionnalité des types nullables fut fixée quelques semaines uniquement avant la sortie publique de la version 2.0, car il a été mis en lumière que si la valeur de la variable était bien nulle, cette variable n'était pas nulle au sens respectant les traditions du terme, c'est-à-dire qu'il ne s'agit pas d'une référence vide. Ainsi, la conversion d'un type primitif de valeur nulle en objet donnait une référence non nulle vers une valeur nulle. Il fallut par conséquent, pour corriger ce problème, corriger le noyau du CLR et effectuer de nombreuses vérifications et corrections sur l'ensemble des produits de la gamme. NET 2.0 (Visual Studio 2005, SQL Server 2005, C# et VB. NET).

Capacités introduites dans C# 3.0

Le C? 3.0 fut présenté au salon PDC 2005. La version finale est disponible depuis le 19 novembre 2007 au téléchargement sur le site de Microsoft (en) . Les principales nouveautés sont les suivantes :

Une présentation du C# 3.0 et de LINQ peut être trouvée sur la page du centre de développement de . NET Framework.

Le code compilé en C# 3.0 est entièrement compatible avec celui du 2.0, dans la mesure où les améliorations apportées ne sont que purement syntaxiques ou ne consistent qu'en des raccourcis compensés au moment de la compilation. Les nouveautés introduites dans les bibliothèques de la version 3.5 (LINQ…) ne sont cependant pas utilisable avec les versions précédentes de C#.

Cette version exige Windows XP ou une version supérieure (Vista). Elle n'est pas disponible pour Windows 2000.

Différences entre Java et le C#

Bien que le C# soit comparable à Java, il existe des différences notables, par exemple :

Standardisation

Le C# a été normalisé par l'ECMA (ECMA-334) en décembre 2001 et par l'ISO/CEI (ISO/CEI 23270) en 2003.

Les modifications survenues dans la Version 2.0 ont été normalisés par l'ECMA (ECMA-334) en juin 2006 et par l'ISO/CEI (ISO/IEC 23270 :2006) en septembre 2006.

Microsoft a ouvert le code source de certaines bibliothèques utilisées par le C# en octobre 2007 sous la licence Microsoft Reference License (MS-RL) .

Compétition

Tous les ans, Microsoft France organise une compétition pour les étudiants programmeurs en C# : le Project Hoshimi.

Le langage

Voici un exemple d'un programme Hello world typique, rédigé en C# :

using System;
 
class HelloWorld
{
    public static void Main()
    {
        Console.WriteLine("Hello World!");
    }
}

Gestion des exceptions

C# possède les instructions try et catch servant à gérer les exceptions (comportement non attendu des instructions du programme), identiques dans la syntaxe à ceux du C++.
Exemple de code testant la connexion à un serveur "Toto" via un fichier "Fichier. txt" :

try
{
    File.Exists(@"\\Toto\Fichier.txt");
}
catch 
{
    MessageBox.Show("L'application n'arrive pas à contacter le serveur Toto", "Alerte");
}

En utilisant une boucle while (condition) , on peut faire des essais répétitifs d'une action générant des exceptions. Si on connaît le code de l'erreur, on peut alors les gérer dans la partie catch.

Dans cet exemple, aucune information sur l'exception n'est obtenue : on cherche juste à savoir si le programme ne s'est pas comporté normalement, auquel cas on arrive dans le bloc catch.

Contrairement au C++ qui n'a pas de type d'exceptions, toute exception C# est héritée (ou une instance) du type System. Exception, ainsi si on cherche à savoir ce qui s'est passé, une solution simple reste d'obtenir une référence vers l'exception de la manière suivante :

try
{
    File.Exists(@"\\Toto\Fichier.txt");
}
catch (Exception e)
{
    MessageBox.Show("L'application n'arrive pas à contacter le serveur Toto. Erreur retournée :\n" + e.ToString(), "Alerte");
}

Ainsi, une information complète sera retournée, décrivant la nature de l'exception qui s'est produite.

De la même manière qu'en C++, l'envoi d'une exception se fait avec le mot-clef throw :

public uint Divide(uint num, uint div) //Fonction de division dans N
{
    if(div == 0) 
        throw new Exception ("Division par 0 !");
    if(num < div)
        throw new Exception ("num est strictement inférieur à div : le résultat de la division ne sera pas un entier naturel !");
    return num / div;
}
//Code ailleurs :
try
{
    Divide(12, 6); //Retourne 2, aucune exception
    Divide(10, 20); //Exception, cette division ne donne aucun résultat dans N
    Divide(10, 0); //Exception, division par zéro impossible
}
catch (Exception e)
{    
    MessageBox.Show("L'erreur suivante a été retournée :\n" + e.ToString(), "Alerte");
}

L'envoi d'une exception (via throw) ou la levée d'une exception (dans un bloc try/catch) met immédiatement fin au bloc en cours. Ainsi, si div est nul, le code de la fonction Divide s'arrêtera à la ligne 2. De même, dans l'exemple précédent, la troisième fonction Divide ne sera jamais exécutée à cause de la levée d'une exception lors du deuxième appel à Divide. Une exception non «catchée» -c'est-à-dire non lancée dans un bloc try/catch- met fin à l'application immédiatement sous la forme d'une UnhandledException (exception non gérée en français).

Liens externes

Livres

  • (fr) Introduction à C# - Pierre-Yves Saumont, Antoine Mirecourt - 2001 - Éditions Eyrolles - (ISBN 2-7464-0301-3)
  • (fr) C# et . NET - Gérard Leblanc - 2002 - Éditions Eyrolles - (ISBN 2-212-11066-9)
  • (fr) C# et . NET Version 2 - Gérard Leblanc - 2006 - Éditions Eyrolles - (ISBN 2-212-11778-7)
  • (en) C# 2005 Programmer's Reference - Adrian Kingsley-Hughes, Kathie Kingsley-Hughes - 2006 - Édition Wrox - (ISBN 0-470-04641-4)
  • (en) Professional C#, 3rd Edition - Simon Robinson, Christian Nagel, Karli Watson, Jay Glynn, Morgan Skinner, Bill Evjen - 2004 - Édition Wrox - (ISBN 0-7645-5759-9)
  • (en) C# Essentials, 2nd Edition - Ben Albahari, Peter Drayton, Brad Merrill - 2002 - Édition O'Reilly Media - (ISBN 0-596-00315-3)

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/C_sharp.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 17/03/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu