Maison >interface Web >js tutoriel >Premier coup d'œil sur C# du point de vue de JS

Premier coup d'œil sur C# du point de vue de JS

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 01:58:13946parcourir

First glance at C# from JS perspective

Mon voyage a commencé avec…

Lorsque j'ai décidé de créer un projet, mon objectif était de créer un jeu pouvant potentiellement comporter des éléments 3D, être interactif et particulièrement joué sur des plateformes mobiles. Je voulais également intégrer l'IA dans le jeu pour ajouter de la profondeur et de la complexité. Naturellement, cela m'a amené à explorer le C#, un langage couramment utilisé dans le moteur de jeu Unity. Bien que je n'aborde pas les spécificités d'Unity lui-même dans cet article, je souhaite me concentrer sur les raisons pour lesquelles j'ai choisi C# et comment il se compare à JavaScript de mon point de vue en tant que personne venant d'un environnement JavaScript.

Pourquoi C#...

La principale raison pour laquelle j'ai décidé d'utiliser C# est que Unity, le moteur de jeu que j'ai choisi, s'appuie fortement sur C# comme langage de programmation principal. Bien qu'il existe d'autres langages que vous pourriez potentiellement utiliser dans Unity, C# est de loin le plus largement pris en charge et recommandé. Il s'agit d'un langage de programmation orientée objet moderne développé par Microsoft et il est couramment utilisé dans diverses applications, notamment les logiciels de bureau, les applications Web (via ASP.NET) et— bien sûr, des jeux utilisant Unity.
C# fait partie de l'écosystème .NET plus vaste, qui offre une vaste bibliothèque de ressources et de frameworks pour tout créer, des petits utilitaires aux applications d'entreprise à grande échelle. Le langage lui-même a été conçu dans un souci de simplicité, de puissance et de sécurité des types. Cela en fait un choix polyvalent pour de nombreux types de projets. Mais dans cet article, je souhaite me concentrer particulièrement sur l'aspect de la sécurité des types et pourquoi cela distingue C#, notamment par rapport à JavaScript.

Pourquoi le type de données C#…

C# est un langage typé statiquement, ce qui signifie que les types de variables (comme int, bool, string) sont définis au moment de la compilation. Étant donné que C# est typé statiquement, le compilateur peut effectuer davantage de travaux d’optimisation à l’avance. Sa fonctionnalité sécurité des types, avec des types de variables strictement définis, permet au compilateur de détecter de nombreux types d'erreurs avant même que le code ne soit exécuté et aide le code à être plus maintenable. JavaScript, étant typé dynamiquement, nécessite davantage de contrôles d'exécution en raison d'un processus appelé coercition de type, qui ajoute une surcharge, en particulier dans les applications volumineuses ou complexes. C'est en partie la raison pour laquelle C# peut être plus rapide. Cependant, le principal avantage en termes de performances de C# réside dans les tâches à forte intensité de calcul et multithread (comme exécuter différentes parties du jeu en parallèle).

Coercition de type JS :
let num = 5;
let str = "10";
console.log(num + str);  // Outputs "510" (string concatenation instead of numeric addition)
str = 10; // Assign a string to a variable and later assign a number to the same variable
Déclaration C# courante du type de données valeur :
int x = 10; // Whole integer number
double pi = 3.14159; // Decimals 64-bit floating point, end with d but not necessary
float y  = 10.2f; // Decimals 32-bit floating point, have to end with f
decimal price = 19.99m; // 128-bit decimal, have to end with m, for precise monetary calculations or any financial stuff
bool isValid = true; //Boolean true or false
char grade = 'A'; //A single character, of 16-bit Unicode character
string name = "John"; //special case, is actually a reference type

Comme nous le savons, en JavaScript, les variables sont déclarées avec var, const et let. De plus, JavaScript n'a aucune distinction entre int et float ; c'est juste un numéro. Par conséquent, C# n’a pas NaN. De plus, en JavaScript, la chaîne est un type primitif (similaire à un type valeur en C#), mais en C#, c'est un type référence.

En C#, les types valeur ne peuvent pas être nuls par défaut, mais vous pouvez utiliser des types nullables pour permettre d'attribuer des types valeur null. null n'est autorisé que pour les types de référence (comme les classes de chaîne, d'objet et personnalisées). Par défaut, les types référence sont initialisés à null. Pour permettre aux types de valeur d'être nullables, vous utilisez le ? syntaxe (comme int ?, double ?, bool ?).

string name = null; // This is valid.
Person person = null; // This is also valid if 'Person' is a class.
int? number = null; // Explicitly allows null since nullable type is enabled
int number = null; // Error: Cannot assign null to a non-nullable value type

JavaScript n'a pas de concept de types nullables comme C# ; tout peut techniquement être nul ou indéfini.

Dans les deux langues, lorsqu'il s'agit de types de référence, toute modification apportée aux données via une référence affectera toutes les autres références pointant vers les mêmes données en mémoire. Cependant, C# est plus fortement typé et les tableaux sont de taille fixe, sauf si vous utilisez des collections comme List, tandis que les tableaux JavaScript sont plus flexibles et dynamiques.
Types de référence C# : objet, classe, délégué, tableau.
Types de référence JavaScript : objet, tableau, fonction.

Tableau C# (taille fixe) :
int[] numbers = new int[] { 1, 2, 3 };
numbers[3] = 4;  // Error: Index out of bounds because the array size is fixed
Tableau JS (taille dynamique) :
let numbers = [1, 2, 3];
numbers.push(4);  // Adds 4 to the end of the array, dynamically resizing it
console.log(numbers);  // [1, 2, 3, 4]

Conversion de données C#…

En C#, la conversion de données fait référence au processus de conversion d'un type de données en un autre, et cela peut être effectué de deux manières principales : implicite et explicite conversions.

  • Les Conversions implicites sont automatiques lors de la conversion de types plus petits vers des types plus grands, ou lorsqu'il n'y a aucun risque de perte de données.
  • Les Les conversions explicites sont effectuées manuellement lorsqu'il existe un risque de perte de données (généralement via le casting).

C# fournit également une méthode intégrée pour des conversions de types sécurisées, en particulier lors de la conversion entre des types qui pourraient ne pas être automatiquement convertis. De plus, les types nullables nécessitent une gestion supplémentaire pour gérer les valeurs nulles. Une conversion appropriée des données est cruciale pour garantir l'intégrité des données, éviter les erreurs d'exécution et maintenir les performances lorsque vous travaillez avec différents types de données en C#.

Dans l'ensemble, même si la flexibilité et la nature dynamique de JavaScript le rendent idéal pour le prototypage rapide et le développement Web, C# présente un net avantage en termes de performances lorsqu'il s'agit de tâches plus complexes ou gourmandes en calcul. Cela est particulièrement vrai dans le développement de jeux, où vous devrez peut-être gérer des graphiques 3D, de l'IA, des simulations physiques et d'autres opérations hautes performances.
N'oubliez pas d'ajouter vos points-virgules(;) pour terminer chaque ligne de code en C# ! J'oublie toujours, mais ils sont strictement obligatoires en C#.
Voici un lien rapide vers la documentation officielle sur les mots-clés réservés sont des mots que la langue utilise, ils ont donc déjà des définitions spécifiques qui ne doivent pas être réécrites

À suivre : Guide pour décomposer et comprendre les erreurs C# (à venir…)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn