Les types de données C# peuvent être divisés en trois catégories : les types numériques, les types de référence et les types de pointeur. Les types de pointeurs ne sont utilisés que dans le code non sécurisé.
Les types de valeur incluent les types simples (tels que les types de caractères, les types à virgule flottante et les types entiers, etc.), les types de collection et les types structurels. Les types de référence incluent les types de classe, les types d’interface, les types représentatifs et les types de tableaux.
La différence entre les types valeur et les types référence est que les valeurs variables des types valeur contiennent directement des données, tandis que les variables des types référence stockent leurs références dans des objets. Pour les variables de type référence, il est tout à fait possible que deux variables différentes référencent le même objet. De cette manière, les opérations sur une variable affecteront l'objet référencé par l'autre variable. Pour les variables de type valeur, chaque variable a sa propre valeur, donc les opérations sur une variable ne peuvent pas affecter une autre variable.
1 Type de valeur
Tous les types de valeur déclarent implicitement un constructeur public sans paramètre, appelé constructeur par défaut. Le constructeur par défaut renvoie une instance d'un type valeur initialement nul, appelé valeur par défaut.
Pour sbyte, byte, short, ushort, int, uint, long, ulong, la valeur par défaut est 0.
Pour char, la valeur par défaut est 'x0000'
Pour float, la valeur par défaut est 0. 0F
Pour double, la valeur par défaut est 0. 0D
Pour décimal, la valeur par défaut est 0. 0M
Pour bool, la valeur par défaut est false
Pour un type d'énumération, la valeur par défaut est 0
Pour un type de structure, le paramètre de valeur par défaut consiste à définir les champs de tous les types de valeur à leurs valeurs respectives. valeurs par défaut. Les champs de tous les types de référence sont attribués vides
1.1 Types simples
C# fournit un ensemble de types structurels prédéfinis appelés types simples. Les types simples sont définis à l'aide de mots réservés, qui sont simplement des pseudonymes pour des types structurels prédéfinis dans l'espace de noms Système. Par exemple, int est un mot réservé, System. Int32 est un type prédéfini dans l'espace de noms Système. Un type simple est exactement le même que son type structurel alias, c'est-à-dire que l'écriture de int équivaut à l'écriture de System. Int32 c'est pareil. Les types simples incluent principalement les entiers, les types à virgule flottante, les types décimaux, les types booléens et les types de caractères
1.1.1 Types entiers
C# prend en charge 9 types entiers : sbyte, byte, short, ushort, int, uint, long, ulong et char.
Sbyte : représente un entier signé de 8 bits, la plage de valeurs est de -128 à 127
Byte : représente un entier non signé de 8 bits, la plage de valeurs est de 0 à 255
Short : représente un Entier signé de 16 bits, allant de -32768 à 32767
ushort : représente un entier signé de 16 bits, allant de -32768 à 32767
Int : représente un entier signé de 32 bits, allant de -2147483648 à 2147483648
uint : représente un entier non signé de 32 bits, allant de 0 à 4294967295
Long : représente un entier signé de 64 bits, allant de -9223372036854775808 à 9223372036854775808
Ulong : représente un entier non signé entier de 64 bits, allant de 0 ~ 18446744073709551615.
char : représente un entier non signé de 16 bits, avec une valeur allant de 0 à 65535.
Les valeurs possibles de type Char correspondent au jeu de caractères Unicode.
Le type Char présente les deux différences suivantes par rapport aux autres types entiers :
a, il n'y a pas de conversion implicite d'autres types en type char. Même pour les types tels que sbyte, byte et ushort, qui peuvent utiliser entièrement le type char pour représenter leurs valeurs, la conversion implicite de sbyte, byte et ushort en char n'existe pas.
b. Les constantes de type char doivent être écrites sous forme de caractères. Si la forme entière est utilisée, elle doit avoir un préfixe de conversion de type. Par exemple, il existe trois formulaires d'affectation pour (char)10 :
char chsomechar="A";
char chsomechar="x0065"; hexadécimal
char chsomechar="u0065; représentation unicode
caractère Il y a les caractères d'échappement suivants dans le type :
1, ' est utilisé pour représenter des guillemets simples
2, " est utilisé pour représenter des guillemets doubles
3, \ est utilisé pour représenter une barre oblique inverse
4,Le type décimal est idéal pour les opérations financières et monétaires. La plage de valeurs va de 1,0*10 -28 à 7,9* 10 28, avec une précision de 28 chiffres après la virgule décimale. Si l'un des opérandes d'une opération binaire est de type décimal, alors l'autre opérande est de type entier ou décimal. Les entiers sont convertis en types décimaux avant les opérations. Si une opération arithmétique sur un type décimal produit une valeur trop petite pour le format du type décimal, le résultat de l'opération sera 0. Si une opération arithmétique sur un type décimal produit une valeur trop grande pour le format du type décimal, une erreur de débordement est déclenchée. Le type décimal a une plus grande précision que le type à virgule flottante, mais la plage numérique est relativement beaucoup plus petite. Lors de la conversion d'un nombre de type à virgule flottante en nombre de type décimal, une erreur de débordement se produira et lors de la conversion d'un nombre de type décimal en nombre de type à virgule flottante, une perte de précision se produira. Il n’y a donc pas de conversion implicite ou explicite entre les deux types. Type booléen : la valeur est vraie ou fausse. Il n’existe aucune norme pour convertir les types booléens en d’autres types.
1.2 Type d'énumération
Les types utilisés pour les éléments de type énumération ne peuvent être que long, int, short et byte. Le type par défaut est int. La valeur par défaut du premier élément est 0 et chaque élément successif est incrémenté de 1. Vous pouvez attribuer des valeurs directement aux éléments. Tels que :
enum monthnames { January=1, February, march=31 }; 可以强制定义其他类型,如: enum monthnames : byte {January , February, March };
1.3 Type structurel
Le type structurel est également un type valeur. Le but de son utilisation est de créer de petits objets pour économiser de la mémoire. . L'exemple suivant représente une adresse IP utilisant 4 champs de type byte.
using System; Struct IP //声明结构 { public byte b1,b2,b3,b4; } Class test { public static void Main() { IP myIP; myIP.b1=192; myIP.b2=168; myIP.b3=1; myIP.b4=101; Console.Write("{0}.{1}。", myIP.b1, myIP.b2); Console.Write("{0}.{1}", myIP.b3, myIP.b4); } }
2 types de référence
Les types de référence incluent les types de classe, les types d'interface, les types représentatifs et les types de tableaux.
2.1 Type de classe
Un type de classe définit une structure de données, qui contient des données membres (telles que des constantes, des champs et des événements, etc.), des membres de fonction (telles que des méthodes, des propriétés, des index , opérations, constructeurs et destructeurs, etc.) et les types imbriqués. L'héritage est pris en charge.
2.2 Type d'objet
Le type d'objet est le type de base ultime pour tous les autres types. Chaque type en C# est directement ou indirectement dérivé du type de classe d'objet.
2.3 Type String
Le type string est une classe scellée directement héritée de l'objet. Les valeurs de type String peuvent être écrites sous forme de chaînes littérales.
2.4 Type d'interface
Une interface déclare un type référence avec uniquement des membres abstraits. L'interface n'a que des indicateurs de méthode, mais pas de code d'exécution. Lors de la définition d'une classe, si la classe dérive d'une interface, elle peut dériver de plusieurs interfaces ; mais si la classe dérive d'une classe, elle ne peut dériver que d'une seule classe.
Déclaration de méthodes, par exemple :
interface iface { void showmyface(); }
2.5 Le type de représentation
représente une référence à une méthode statique ou à une instance d'objet, faisant référence à la méthode d'instance de l'objet. La chose la plus proche est le pointeur dans c/c, mais le pointeur ne peut accéder qu'aux fonctions statiques, ce qui signifie qu'il peut accéder à la fois aux méthodes statiques et aux méthodes d'instance.
2.6 Tableau
Un tableau est une structure de données contenant une liste de variables. Les variables de tableau sont également appelées éléments de tableau. Elles ont le même type. Ce type est également appelé type d'élément de tableau. Le type d'élément d'un tableau peut être n'importe quel type, y compris les types de tableau. Les tableaux utilisent des indices pour déterminer le numéro d'index de chaque élément du tableau. Un tableau avec un seul indice est appelé un tableau unidimensionnel, et un tableau avec plus d'un indice est appelé un tableau multidimensionnel
.
Exemple : int[] a={0, 2, 4, 6, 8}; Équivalent à int[] a=new int[] {0, 2, 4, 6, 8};
Aussi peut être initialisé comme ceci : a[0]=0; a[1]=2; a[2]=4; a[4]=8;
int[] a; /int Tableau unidimensionnel de type
int[,] a; //Tableau bidimensionnel de type int
int[,,] a; //Tableau tridimensionnel de type int
int[ ] []a; / /Tableau de tableau de type int
int[][][]a; //Tableau de tableau de type int
La longueur de chaque dimension du tableau ne fait pas partie de le type de tableau, la longueur de la dimension Il est spécifié dans l'instruction de création du tableau, pas dans le type de tableau
, par exemple :
int[,,] a3=new int[10, 20, 30];
a3 est une variable de tableau, int[,,] ne spécifie pas la longueur du tableau, seule l'instruction de création de tableau new int[10, 20, 30] le fait.
L'exemple suivant crée un tableau de tableaux :
int[][] J=new int[3][];
J[0]=new int[] {1, 2, 3};
J[1]=nouveau int[] {1, 2, 3, 4, 5, 6};
J[2]=nouveau int[] {1, 2, 3, 4, 5, 6 , 7, 8, 9};
Ce qui précède est le contenu des types de données C#. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !