C # - Tipi di dati

Le variabili in C # sono classificate nei seguenti tipi:

  • Tipi di valore
  • Tipi di riferimento
  • Tipi di puntatori

Tipo di valore

Alle variabili del tipo di valore può essere assegnato direttamente un valore. Sono derivati ​​dalla classe System.ValueType.

I tipi di valore contengono direttamente dati. Alcuni esempi sonoint, char, and float, che memorizza rispettivamente numeri, alfabeti e numeri in virgola mobile. Quando dichiari un fileint type, il sistema alloca memoria per memorizzare il valore.

La tabella seguente elenca i tipi di valore disponibili in C # 2010 -

genere Rappresenta Gamma Valore predefinito
bool Valore booleano Vero o falso Falso
byte Intero senza segno a 8 bit Da 0 a 255 0
char Carattere Unicode a 16 bit U +0000 a U + ffff "\ 0"
decimale Valori decimali precisi a 128 bit con 28-29 cifre significative (-7,9 x 10 da 28 a 7,9 x 10 28 ) / 10 da 0 a 28 0,0M
Doppio Tipo a virgola mobile a doppia precisione a 64 bit (+/-) 5,0 x 10 da -324 a (+/-) 1,7 x 10 308 0.0D
galleggiante Tipo a virgola mobile a precisione singola a 32 bit Da -3,4 x 10 38 a + 3,4 x 10 38 0.0F
int Tipo intero con segno a 32 bit -2.147.483.648 a 2.147.483.647 0
lungo Tipo intero con segno a 64 bit -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 0L
sbyte Tipo intero con segno a 8 bit Da -128 a 127 0
corto Tipo intero con segno a 16 bit Da -32.768 a 32.767 0
uint Tipo intero senza segno a 32 bit Da 0 a 4.294.967.295 0
ulong Tipo intero senza segno a 64 bit Da 0 a 18.446.744.073.709.551.615 0
ushort Tipo intero senza segno a 16 bit Da 0 a 65.535 0

Per ottenere la dimensione esatta di un tipo o di una variabile su una particolare piattaforma, puoi utilizzare il sizeofmetodo. L'espressione sizeof (tipo) restituisce la dimensione di archiviazione dell'oggetto o del tipo in byte. Di seguito è riportato un esempio per ottenere la dimensione del tipo int su qualsiasi macchina:

using System;

namespace DataTypeApplication {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Size of int: 4

Tipo di riferimento

I tipi di riferimento non contengono i dati effettivi memorizzati in una variabile, ma contengono un riferimento alle variabili.

In altre parole, si riferiscono a una posizione di memoria. Utilizzando più variabili, i tipi di riferimento possono fare riferimento a una posizione di memoria. Se i dati nella posizione di memoria vengono modificati da una delle variabili, l'altra variabile riflette automaticamente questo cambiamento di valore. Esempio dibuilt-in i tipi di riferimento sono: object, dynamic, e string.

Tipo di oggetto

Il Object Typeè la classe base definitiva per tutti i tipi di dati in C # Common Type System (CTS). Object è un alias per la classe System.Object. Ai tipi di oggetto possono essere assegnati valori di qualsiasi altro tipo, tipo di valore, tipo di riferimento, tipo predefinito o definito dall'utente. Tuttavia, prima di assegnare valori, è necessaria la conversione del tipo.

Quando un tipo di valore viene convertito in un tipo di oggetto, viene chiamato boxing e d'altra parte, quando un tipo di oggetto viene convertito in un tipo di valore, viene chiamato unboxing.

object obj;
obj = 100; // this is boxing

Tipo dinamico

È possibile memorizzare qualsiasi tipo di valore nella variabile del tipo di dati dinamico. Il controllo del tipo per questi tipi di variabili viene eseguito in fase di esecuzione.

La sintassi per la dichiarazione di un tipo dinamico è -

dynamic <variable_name> = value;

Per esempio,

dynamic d = 20;

I tipi dinamici sono simili ai tipi di oggetto tranne per il fatto che il controllo del tipo per le variabili del tipo di oggetto avviene in fase di compilazione, mentre quello per le variabili di tipo dinamico avviene in fase di esecuzione.

Tipo di stringa

Il String Typeconsente di assegnare qualsiasi valore di stringa a una variabile. Il tipo di stringa è un alias per la classe System.String. È derivato dal tipo di oggetto. Il valore per un tipo di stringa può essere assegnato utilizzando stringhe letterali in due forme: quoted e @quoted.

Per esempio,

String str = "Tutorials Point";

Una stringa letterale @quoted ha il seguente aspetto:

@"Tutorials Point";

I tipi di riferimento definiti dall'utente sono: class, interface o delegate. Discuteremo questi tipi nel capitolo successivo.

Tipo di puntatore

Le variabili del tipo di puntatore memorizzano l'indirizzo di memoria di un altro tipo. I puntatori in C # hanno le stesse funzionalità dei puntatori in C o C ++.

La sintassi per la dichiarazione di un tipo di puntatore è -

type* identifier;

Per esempio,

char* cptr;
int* iptr;

Discuteremo i tipi di puntatore nel capitolo "Codici non sicuri".