279 votes

Quelle est la différence entre C# et .NET?

Puis-je savoir quelle est la différence entre C# et .NET ? Quand je pense à C#, je dirais immédiatement que c'est un langage .NET, mais lorsque je recherche des offres d'emploi, elles exigent que les candidats aient de l'expérience en C# et .NET. Quelqu'un peut-il m'expliquer ?

55 votes

Je peux expliquer les messages de besoins... Ils sont rédigés par des développeurs non-.NET. Soit des ressources humaines, soit des gestionnaires qui n'ONT PAS besoin de comprendre la distinction.

2 votes

Vous avez tout à fait raison, je devrais faire la différence entre les deux. J'utilise C# depuis un certain temps maintenant et j'utilise toujours la classe de la bibliothèque .Net lors de la programmation en C#, mais je ne prends jamais le temps de différencier les deux. Mais maintenant je sais, merci.

1 votes

Si vous avez de l'expérience en C#, vous avez également une expérience décente en .NET. Les fonctions comme Console.Write() et les classes comme List font partie de la bibliothèque .NET, ce qui signifie qu'elles peuvent également être accessibles par d'autres langages .NET comme VB.NET. À moins d'avoir utilisé C# d'une manière peu commune, vous ne pouvez pas avoir l'un sans l'autre.

253voto

Andrew Hare Points 159332

Le C# est un langage de programmation, .NET est un terme générique qui tend à couvrir à la fois le .NET Framework (une bibliothèque de framework d'application) et le Common Language Runtime qui est l'environnement d'exécution dans lequel les assemblages .NET sont exécutés.

L'implémentation de C# par Microsoft est fortement intégrée au .NET Framework, il est donc compréhensible que ces deux concepts soient confondus. Cependant, il est important de comprendre qu'ils sont deux choses très différentes.

Voici une classe écrite en C# :

class Example { }

Voici une classe écrite en C# qui utilise explicitement un assemblage, un type et une méthode du framework .NET :

class Example
{
    static void Main()
    {
        // Ici, nous faisons appel au framework .NET pour
        // écrire dans la console de sortie
        System.Console.Write("bonjour, monde");
    }
}

Comme je l'ai mentionné précédemment, il est très difficile d'utiliser l'implémentation de C# par Microsoft sans utiliser également le framework .NET. Mon premier exemple de Example utilise même le framework .NET (implicitement, oui, mais il l'utilise néanmoins) car Example hérite de System.Object.

De plus, la raison pour laquelle j'utilise l'expression l'implémentation de C# par Microsoft est parce qu'il existe d'autres implémentations de C# disponibles.

3 votes

@Tejs - En fait, VB.NET est .NET. VB n'est pas.

2 votes

+1 Andrew Hare. @Tejs: À la fois C# et VB sont fortement intégrés à .NET, ce n'est pas .NET. .NET est un framework. Par exemple, vous pouvez utiliser .NET en Delphi. Si C# est .NET, alors vous seriez capable de coder en C# en Delphi .NET, ce qui est clairement impossible et même impensable.

0 votes

De même, il n'y a aucune raison pour laquelle vous devriez avoir .NET pour programmer en C#, bien que je ne connaisse personne qui écrive en C# sans utiliser .NET ou Mono.

169voto

Tomas Petricek Points 118959

En plus de la réponse d'Andrew, il convient de noter que :

  • .NET n'est pas seulement une bibliothèque, mais aussi un runtime pour l'exécution d'applications.
  • La connaissance de C# implique une certaine connaissance de .NET (car le modèle d'objet C# correspond au modèle d'objet .NET et vous pouvez faire des choses intéressantes en C# en utilisant simplement les bibliothèques .NET). L'inverse n'est pas nécessairement vrai car vous pouvez utiliser d'autres langages pour écrire des applications .NET.

La distinction entre un langage, un runtime et une bibliothèque est plus stricte dans .NET/C# que par exemple en C++, où la spécification du langage inclut également quelques fonctions de bibliothèque de base. La spécification de C# ne parle que très peu de l'environnement (essentiellement qu'il devrait contenir certains types tels que int, mais c'est à peu près tout).

0 votes

Il pourrait être intéressant d'ajouter la définition de runtime dans le premier point (différente de la lang/librairie). Voici une bonne référence : stackoverflow.com/a/3900802/6165072

67voto

heisenberg Points 6120

C# est un langage de programmation, .NET est le framework sur lequel le langage est construit.

64voto

Fareevar Points 41

Le C# est un langage de programmation orienté objet puissant qui est principalement construit sur le framework .NET.

Le C# est l'avion et .NET est la piste ;)

23voto

Polaris878 Points 7833

C# est un langage, .NET est un cadre d'application. Les bibliothèques .NET peuvent s'exécuter sur le CLR et ainsi tout langage pouvant s'exécuter sur le CLR peut également utiliser les bibliothèques .NET.

Si vous êtes familier avec Java, c'est similaire... Java est un langage construit sur le JVM... bien que n'importe laquelle des bibliothèques Java pré-assemblées puissent être utilisées par un autre langage construit sur le JVM.

4 votes

Qu'est-ce que signifie CLR ?

6 votes

Common Language Runtime

4 votes

@KasunSiyambalapitiya CLR est utilisé pour convertir le code en code natif. Cela signifie que lorsque vous écrivez un code c#, la conversion se fera ainsi : C# => CLR => Code natif. Ensuite, il fonctionnera sur toutes les plateformes comme linux ou windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X