tech · 2 min de lecture

Java Vs C# : Les types valeurs en C#

Comparaison de Java et C# sur les types valeurs

Hugo
Hugo1 mai 2011 · 2 min
Java Vs C# : Les types valeurs en C#

Warning, warning, ceci n'est pas une rubrique à troll !!

Bien qu'étant plutot spécialiste Java, je me suis mis récemment au C#. Loin des débats qui n'en finissent plus pour savoir lequel des deux p... le plus loin, je tenais à faire une petite rubrique pour lister "les trucs qui tuent" qui existent dans chaque langage et que tout bon développeur aime connaitre.

Et donc le truc qui tue du jour :

Les types valeurs en C#

Bon en fait il ne s'agit pas vraiment d'un truc qui tue, juste une petite clarification entre le type valeur de C# et le type natif en Java.

On dit souvent que Java n'est pas vraiment un langage objet car tout n'est pas objet. En effet il existe des types dits "natifs", ce sont les fameux int, long, float, boolean et char (pour la liste complète : voir la doc).

Ces types ne se manipulent pas comme les autres :

  • pas d'allocation mémoire avec new, un type natif est créé directement sur le tas
  • pas de méthode disponible sur un type natif
  • on les manipule par valeur et non par référence

En C#, ces types natifs ont été remplacés par des types valeurs. Ce sont en fait des structures (mot clé struct) et non des classes. Parmi les différences avec les classes :

  • ils n'ont pas besoin d'être déclarés avec new (même si c'est possible)
  • quelque soit la façon de créer une variable elle sera alloué sur le tas et non la pile
  • ils sont manipulés par valeur (l'attribution d'une variable de type valeur à une autre copie la valeur contenue)

(Pour plus de détails, voir la doc)

En fait, pour bien comprendre ces types valeurs sont tous des alias vers des types intégrés au framework, par exemple int alias de System.Int32. Et donc il y a des méthodes disponibles sur ces types valeurs ce qui permet d'écrire :

java
int i = 1;
Console.WriteLine(i.ToString()); // ici l'intérêt est minime, c'est uniquement pour l'exemple

ou bien

java
int i = int.Parse("1");

Dans ces conditions, on peut effectivement dire que C# est un peu plus objet que Java.

Hugo

Écrit par

Hugo

Software Engineer with more than 20 years of experience. I love to share about technologies and startups

Vous avez aimé ce récit ?

Environ un mail par mois, quand un texte mérite d'être écrit. Vos lecteurs restent vos lecteurs.

205 abonnés · désabonnement en un clic

À lire aussi

Java Vs C# : La gestion des exceptions

Comparaison de Java et C# sur la gestion des exceptions

23 mars 2011
Java Vs C# : La gestion des exceptions

Java Vs C# : Eviter les conflits de nom dans les interfaces

Comparaison de Java et C# sur les conflits de nom dans les interfaces

29 mars 2011
Java Vs C# : Eviter les conflits de nom dans les interfaces

Java Vs C# : Les paramètres nommés et optionnels en C#

Comparaison de Java et C# sur les paramètres nommés et optionnels

3 févr. 2011
Java Vs C# : Les paramètres nommés et optionnels en C#

Réponses

0 Commentaire

Pas encore de commentaire. Soyez le premier !