Puis-je savoir quelle est la différence entre C # et .NET? Quand je pense à C #, je dirais tout de suite que c'est un langage .NET, mais quand je recherche des postes, ils demandent aux candidats d'avoir une expérience C # et .NET. Quelqu'un peut-il me donner une explication?
204
Réponses:
En plus de ce qu'a dit Andrew, il convient de noter que:
La distinction entre un langage , un runtime et une bibliothèque est plus stricte en .NET / C # que par exemple en C ++, où la spécification du langage inclut également certaines fonctions de bibliothèque de base. La spécification C # ne dit que très peu de choses sur l'environnement (fondamentalement, il devrait contenir certains types tels que
int
, mais c'est plus ou moins tout).la source
C # est un langage de programmation, .NET est un terme générique qui a tendance à couvrir à la fois le .NET Framework (une bibliothèque de framework d'application) et le Common Language Runtime qui est le runtime dans lequel les assemblys .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 les deux concepts soient confondus. Cependant, il est important de comprendre que ce sont deux choses très différentes.
Voici une classe écrite en C #:
Voici une classe écrite en C # qui utilise explicitement un assembly, un type et une méthode de framework .NET:
Comme je l'ai mentionné précédemment, il est très difficile d'utiliser l'implémentation Microsoft de C # sans utiliser également le framework .NET. Ma première
Example
implémentation ci-dessus utilise même le framework .NET (implicitement oui, mais il l'utilise quand même) carExample
hérite deSystem.Object
.En outre, la raison pour laquelle j'utilise l'expression Microsoft implémentation de C # est parce qu'il existe d' autres implémentations de C # disponibles .
la source
C # est un langage de programmation, .NET est le framework sur lequel le langage est construit.
la source
C # est un langage de programmation orienté objet puissant qui est principalement construit sur le framework .NET.
C # est l'avion et .NET est la piste;)
la source
C # est un langage, .NET est un cadre d'application. Les bibliothèques .NET peuvent s'exécuter sur le CLR et donc tout langage pouvant s'exécuter sur le CLR peut également utiliser les bibliothèques .NET.
Si vous connaissez Java, c'est similaire ... Java est un langage construit au-dessus de la JVM ... bien que n'importe laquelle des bibliothèques Java pré-assemblées puisse être utilisée par un autre langage construit au-dessus de la JVM.
la source
CLR
?Lorsque les gens parlent du «framework .net», ils ont tendance à combiner deux domaines principaux - la bibliothèque d'exécution et la machine virtuelle qui exécute réellement le code .net.
Lorsque vous créez une bibliothèque de classes dans Visual Studio en C #, la DLL suit un format prescrit - très approximativement, il y a une section qui contient des métadonnées qui décrit les classes qui y sont incluses et quelles fonctions elles ont, etc. et qui décrit où dans le binaire, ces objets existent. Ce format .net commun est ce qui permet aux bibliothèques d'être partagées entre les langages .net (C #, VB.Net, F # et autres) facilement. Bien qu'une grande partie de la «bibliothèque d'exécution» .net soit écrite en C # maintenant (je crois), vous pouvez imaginer combien d'entre elles auraient pu être écrites dans des langues non gérées mais disposées dans ce format prescrit afin qu'elles puissent être consommées par les langues .net .
La véritable "viande" de la bibliothèque que vous créez est constituée de CIL ("Common Intermediate Language") qui est un peu comme le langage d'assemblage de .net - encore une fois, ce langage est la sortie commune de tous les langages .net, ce qui est ce que rend les bibliothèques .net consommables par n'importe quel langage .net.
En utilisant l'outil "ildasm.exe", qui est disponible gratuitement dans les SDK Microsoft (et peut-être déjà sur votre ordinateur), vous pouvez voir comment le code C # est converti en métadonnées et en IL. J'ai inclus un exemple au bas de cette réponse à titre d'exemple.
Lorsque vous exécutez exécuter du code .net, ce qui se passe généralement, c'est que la machine virtuelle .net lit cet IL et le traite. Il s'agit de l'autre côté de .net et, encore une fois, vous pouvez probablement imaginer que cela pourrait facilement être écrit dans un langage non géré - il suffit "de lire" les instructions de la machine virtuelle et de les exécuter (et de l'intégrer au garbage collector, qui a également besoin pas de code .net).
Ce que j'ai décrit est (encore une fois) ce qui se passe lorsque vous créez un exécutable dans Visual Studio (pour plus d'informations, je recommande fortement le livre "CLR via C # par Jeffrey Richter" - il est très détaillé et très bien écrit).
Cependant, il peut arriver que vous écriviez C # qui ne sera pas exécuté dans un environnement .net - par exemple, Bridge.NET "compile" le code C # en JavaScript qui est ensuite exécuté dans le navigateur (l'équipe qui le produit est passée à l'effort d'écrire des versions de la bibliothèque d'exécution .net qui sont écrites en JavaScript et ainsi la puissance et la flexibilité de la bibliothèque .net sont disponibles pour le JavaScript généré). Ceci est un parfait exemple de la séparation entre C # et .net - il est possible d'écrire C # pour différentes "cibles"; vous pouvez cibler l'environnement d'exécution .net (lorsque vous créez un exécutable) ou vous pouvez cibler l'environnement de navigateur (lorsque vous utilisez Bridge.NET).
Un exemple de classe (très) simple:
Les métadonnées et IL résultants (récupérés via ildasm.exe):
la source
Dans .NET, vous ne trouvez pas uniquement C #. Vous pouvez trouver Visual Basic par exemple. Si un travail nécessite des connaissances .NET, il a probablement besoin d'un programmeur qui connaît l'ensemble des langages fournis par le framework .NET.
la source
C # est un langage de programmation.
.Net est un framework utilisé pour créer des applications sur Windows.
Le framework .Net n'est pas limité à C #. Différentes langues peuvent cibler le framework .Net et créer des applications à l'aide de ce framework. Les exemples sont F # ou VB.Net
la source
C#
n'a pas de bibliothèque d'exécution distincte. Il utilise.NET
comme une bibliothèque d'exécution.la source
Ici, je vous ai fourni un lien où expliquer ce qu'est le langage C # et l' architecture de la plate-forme .NET Framework . N'oubliez pas que C # est un langage de programmation polyvalent, orienté objet, et qu'il s'exécute sur le .NET Framework.
.NET Framework comprend une grande bibliothèque de classes nommée Framework Class Library (FCL) et fournit une interface utilisateur, un accès aux données, une connectivité à la base de données, une cryptographie, le développement d'applications Web, des algorithmes numériques et des communications réseau.
.NET Framework a été développé par Microsoft et fonctionne principalement sur Microsoft Windows.
Introduction au langage C # et au .NET Framework à partir de Microsoft Docs
la source