Maison  >  Article  >  développement back-end  >  Structure C# vs classe

Structure C# vs classe

WBOY
WBOYoriginal
2024-09-03 15:07:59750parcourir

Comme son nom l'indique, C# utilise le mot-clé « struct » pour définir les types de valeur, et Class utilise le mot-clé « class » pour définir les types de référence. En C#, les variables définies dans la structure sont stockées dans la pile ou dans le type de variable donné et les instances sont appelées comme variable de structure. Alors que, pour une « classe », les instances sont appelées en tant qu’objets et sont stockées dans des unités de mémoire structurées en tas. En termes de constructeurs et de destructeurs, une structure C# ne peut pas avoir de destructeur, mais une classe peut avoir un destructeur. La classification des membres est autorisée dans la classe, comme les types abstraits, virtuels et protégés.

Comparaison face à face entre C# Struct et Class (infographie)

Vous trouverez ci-dessous les 14 principales différences entre C# Struct et Class.

Structure C# vs classe

Différences clés entre C# Struct et Class

Certaines différences clés entre C# Struct et Class sont les suivantes :

  1. Une structure peut être déclarée à l'aide du mot-clé 'struct' alors qu'une classe peut être déclarée à l'aide du mot-clé 'class'.
  2. La struct est un type valeur donc une variable de type struct se compose directement des données de la structure alors que la classe est un type référence et la variable de type classe consiste en une référence aux données, que nous avons appelées un objet de la classe.
  3. Les variables de type classe sont allouées dans le tas et peuvent être récupérées tandis que les variables de type struct sont allouées soit dans la pile, soit en ligne dans le type conteneur.
  4. Un objet de classe est créé à l'aide d'un mot-clé « nouveau » alors que l'objet de structure peut être créé avec ou sans mot-clé « nouveau ». L'instanciation d'une structure sans utiliser d'opérateur « nouveau » ne permet pas à l'utilisateur d'accéder à ses méthodes, propriétés ou événements.
  5. Chaque variable de la structure contient sa copie de données (à l'exception des variables de paramètres ref et out) afin que les modifications effectuées sur une variable n'affectent pas une autre variable alors qu'en classe, deux variables ou plus peuvent faire référence au même objet et à toute modification effectuée sur une variable peut affecter une autre variable. Nous pouvons comprendre ce point avec les exemples ci-dessous.

Exemple d'utilisation de struct

Code :

using System;
namespace structAndClass
{
//creating structure
public struct Demo
{
public int x, y;
//parameterized constructor
public Demo(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class StructDemo
{
public static void Main(string[] args)
{
Demo a = new Demo(50, 50);
Demo b = a;
a.x = 100;
Console.WriteLine("Value of a.x = "+a.x);
Console.WriteLine("Value of b.x = "+b.x);
}
}
}

Sortie :

Structure C# vs classe

Exemple d'utilisation de la classe

Code :

using System;
namespace structAndClass
{
public class Demo
{
public int x, y;
public Demo(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class StructDemo
{
public static void Main(string[] args)
{
Demo a = new Demo(50, 50);
Demo b = a;
a.x = 100;
Console.WriteLine("Value of a.x = "+a.x);
Console.WriteLine("Value of b.x = "+b.x);
}
}
}

Sortie :

Structure C# vs classe

  1. L'allocation et la désallocation de mémoire pour le type struct sont moins chères que celles du type classe.
  2. Une structure ne peut pas avoir de constructeur d'instance sans paramètre, elle peut avoir un constructeur paramétré ou statique alors qu'une classe peut avoir un constructeur sans paramètre par défaut.
  3. Une structure ne peut pas avoir de destructeur alors qu'une classe peut avoir un destructeur.
  4. Nous ne pouvons pas hériter d'une structure d'une autre structure ou d'une autre classe et elle ne peut pas être la base d'une classe alors que nous pouvons hériter d'une classe d'une autre classe et qu'une classe peut être la base d'une autre classe. Ainsi, la classe prend en charge l'héritage alors que la structure ne prend pas en charge l'héritage.
  5. Nous ne pouvons pas spécifier les membres d'une structure comme abstraits, virtuels ou protégés alors qu'une classe peut avoir ses membres spécifiés comme abstraits, virtuels ou protégés.
  6. L'instance de la classe est appelée un objet tandis que l'instance d'une structure est appelée la variable de structure.
  7. Si nous n'avons spécifié aucun spécificateur d'accès alors les membres d'une classe sont privés par défaut alors que les membres d'une structure seront publics par défaut.
  8. La classe est utilisée pour les structures de données complexes tandis que la structure est utilisée pour les petites structures de données.

Tableau de comparaison des structures C# et des classes

Voyons quelques différences supplémentaires entre C# Struct et Class à travers un tableau de comparaison pour une compréhension claire :

Parameter C# Struct Class
Data type The structure is a value type of data type. Class is a reference type data type.
Keyword The structure can be defined using the ‘struct’ keyword. The class can be defined using the ‘class’ keyword.
Storage area The structure variable is stored either in stack or inline in containing type. The object of the class is stored in heap.
Instance creation The instance of a struct can be created with or without a ‘new’ keyword. The instance of the class is created using a ‘new’ keyword.
Assignment If we make an assignment to a variable of struct type then it creates a copy of the value being assigned. Thus, each variable instructs has its copy of data. If we make an assignment to a variable of class type then it copies the reference. Thus, two or more variables in class can refer to the same object.
Constructor The structure does not contain a parameterless instance constructor. The class contains a parameterless instance constructor, if not defined explicitly by the user.
Destructor It cannot have a destructor. It can have a destructor.
Inheritance The structure cannot inherit from another class or structure.

The structure cannot be used as a base for another structure or class.

The class can inherit from another class. The class can be a base class for another class.
Data members Members of a struct cannot be abstract, virtual or protected. Members of a class can be abstract, virtual or protected.
Instance The instance of the structure is called the structure variable. The instance of the class is called an object.
Default access specifier Members of the structure are public by default. Members of the class are private by default.
Usage The structure can be used for small data structures. Class is used for the complex data structure.
Garbage collection The instance of a struct cannot be garbage collected. The instance of the class can be garbage collected.
Variable initializing Including variable initializer is not allowed while making instance field declarations instruct. Including variable initializer is allowed while making instance field declarations in a class.

Conclusion

La classe et la structure sont utilisées pour contenir les éléments de données associés. Nous pouvons utiliser la classe pour un grand nombre de données et utiliser la structure pour les petites données. La classe est de type référence et stockée dans le tas tandis que la structure est de type valeur et stockée dans la pile.

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
Article précédent:Chaîne vs chaîne C#Article suivant:Chaîne vs chaîne C#