Tipi di dati in C#: Double, Intero, Virgola mobile, Car

โšก Riepilogo intelligente

In C#, i tipi di dati definiscono il tipo di valori che una variabile puรฒ contenere, dai numeri interi e a virgola mobile ai valori booleani e alle stringhe, e determinano quanta memoria ogni variabile riserva durante l'esecuzione del programma.

  • ๐Ÿ”ข Tipi interi: La parola chiave Int32 (int) memorizza numeri interi come 10, 20 o 30 all'interno di un intervallo di memoria fisso.
  • ๐Ÿ”ฃ Tipi a virgola mobile: I tipi double e float contengono valori decimali, mentre il tipo decimal offre una maggiore precisione per i calcoli finanziari.
  • โ˜‘๏ธ Tipo booleano: La parola chiave Boolean memorizza solo valori booleani (vero o falso) e gestisce la logica condizionale.
  • ๐Ÿ”ค Tipi di testo: `char` contiene un singolo carattere, mentre `string` memorizza una sequenza di caratteri come testo.
  • ๐Ÿงฉ Valore rispetto al riferimento: I tipi valore memorizzano i dati direttamente, mentre i tipi riferimento, come le stringhe, memorizzano un indirizzo di memoria.
  • ๐Ÿค– Assistenza AI: GitHub Copilot e ML.NET introducono suggerimenti di codice e apprendimento automatico nella gestione dei tipi in C#.

Tipi di dati in C#

Cosa sono i tipi di dati in C#?

Il linguaggio C# viene fornito con un set di tipi di dati Basic. Questi tipi di dati vengono utilizzati per creare valori utilizzati all'interno di un'applicazione. Esploriamo i tipi di dati di base disponibili in C#. Per ogni esempio, modificheremo solo la funzione principale nel nostro file Program.cs.

1) Intero

I tipi di dati Integer vengono utilizzati per lavorare con i numeri. In questo caso, i numeri sono numeri interi come 10, 20 o 30. In C#, il tipo di dati รจ indicato da Parola chiave Int32. Di seguito รจ riportato un esempio di come รจ possibile utilizzare questo tipo di dati. Nel nostro esempio definiremo una variabile Int32 denominata num. Assegneremo quindi un valore intero alla variabile e lo visualizzeremo di conseguenza.

Tipi di dati interi in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   Int32 num=30;
   Console.Write(num);  
   
   Console.ReadKey();
  }
 }
}

Code Spiegazione:-

  1. Il tipo di dati Int32 viene specificato per dichiarare una variabile intera denominata num. Alla variabile viene quindi assegnato il valore 30.
  2. Infine la funzione console.write viene utilizzata per visualizzare il numero sulla console.

Se il codice sopra riportato viene inserito correttamente e il programma viene eseguito correttamente, verrร  visualizzato il seguente output.

Produzione:

Tipi di dati interi in C#

Dall'output, puoi vedere chiaramente che la variabile intera chiamata num รจ stata visualizzata nella console

2) Double

Un tipo di dati double viene utilizzato per lavorare con i decimali. In questo caso, i numeri sono numeri interi come 10.11, 20.22 o 30.33. In C#, il tipo di dati รจ indicato dalla parola chiave "Doubleโ€œ. Di seguito รจ riportato un esempio di questo tipo di dati.

Nel nostro esempio, definiremo una variabile double chiamata num. Assegneremo quindi un Double valore alla variabile e quindi visualizzarlo di conseguenza.

Double Tipi di dati in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   double num=30.33;
   Console.Write(num); 
   
   Console.ReadKey();
  }
 }
}

Code Spiegazione:-

  1. Il tipo di dati double รจ specificato per dichiarare un tipo double variabile chiamato num. Alla variabile viene quindi assegnato il valore 30.33.
  2. Infine la funzione console.write viene utilizzata per visualizzare il numero sulla console.

Se il codice sopra riportato viene inserito correttamente e il programma viene eseguito correttamente, verrร  visualizzato il seguente output.

Produzione:

Double Tipi di dati in C#

Dall'output, puoi vedere chiaramente che la variabile double chiamata num รจ stata visualizzata nella console

3) Booleano

Un tipo di dati booleano viene utilizzato per lavorare con i valori booleani di vero e falso. In C#, il tipo di dati รจ indicato dalla parola chiave booleana. Di seguito รจ riportato un esempio di questo tipo di dati che puรฒ essere utilizzato.

Nel nostro esempio, definiremo una variabile booleana chiamata "status". Assegneremo quindi un valore booleano alla variabile e lo visualizzeremo di conseguenza.

Tipi di dati booleani in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
  { 
   static void Main(string[] args) 
   {
    Boolean status=true;
    Console.Write(status);
    
    Console.ReadKey();
   }
  }
}

Code Spiegazione:-

  1. Il tipo di dati booleano viene specificato per dichiarare una variabile booleana chiamata "status". Alla variabile viene quindi assegnato il valore vero/falso.
  2. Infine la funzione console.write viene utilizzata per visualizzare il valore booleano sulla console.

Se il codice precedente viene inserito correttamente e il programma viene eseguito correttamente, verrร  visualizzato l'output.

Produzione:

Tipi di dati booleani in C#

Dall'output, puoi vedere chiaramente che la variabile booleana che รจ uguale a true รจ stata visualizzata nella console

4) Stringa

Un tipo di dati String viene utilizzato per lavorare con i valori String. In C#, il tipo di dati รจ indicato dalla parola chiave "String". Di seguito รจ riportato un esempio di questo tipo di dati.

Nel nostro esempio, definiremo una variabile String chiamata "messaggio". Assegneremo quindi un valore String alla variabile e quindi lo visualizzeremo di conseguenza.

Tipi di dati stringa in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class program
 {
  static void Main(string[] args)
  {
   String message="Hello";
   Console.Write(message);
   
   Console.ReadKey();
  }
 }
}

Code Spiegazione:-

  1. Il tipo di dati String viene specificato per dichiarare una variabile stringa denominata messaggio. Alla variabile viene quindi assegnato il valore "Hello".
  2. Infine, la funzione console.write viene utilizzata per visualizzare il valore della stringa sulla console.

Se il codice precedente viene inserito correttamente e il programma viene eseguito correttamente, verrร  visualizzato l'output.

Produzione:

Tipi di dati stringa in C#

Dall'output, puoi vedere chiaramente che la variabile String chiamata message รจ stata visualizzata nella console

Elenco completo dei tipi di dati C#

I quattro esempi precedenti illustrano i tipi piรน comuni, ma C# offre un set completo di tipi di dati valore predefiniti. Ogni tipo riserva una quantitร  fissa di memoria e accetta un intervallo specifico di valori, quindi scegliere il tipo piรน piccolo che si adatti in modo sicuro ai dati mantiene il programma efficiente.

Tipo di dati Taglia Allineare / Descriptione
byte 1 byte 0 a 255
corto 2 byte -32,768 a 32,767
int (Int32) 4 byte -2,147,483,648 a 2,147,483,647
lungo 8 byte Numeri interi molto grandi (ยฑ9.2 quintilioni)
galleggiante 4 byte Numeri decimali con una precisione di circa 6-7 cifre
doppio 8 byte Numeri decimali con una precisione di circa 15-16 cifre
decimale 16 byte Numeri decimali ad alta precisione (28-29 cifre) per il denaro
serbatoio 2 byte Un singolo carattere Unicode
bool 1 byte vero o falso

Accanto a questi tipi valore, il tipo stringa รจ il tipo di riferimento piรน utilizzato e memorizza una sequenza di caratteri di qualsiasi lunghezza. La scelta di un tipo appropriato previene errori di overflow e un utilizzo non necessario della memoria.

Tipi valore vs tipi riferimento in C#

Ogni tipo di dato in C# rientra in uno di questi due gruppi: tipi valore e tipi riferimento. Questa distinzione determina il modo in cui C# memorizza i dati e il comportamento di una variabile quando viene copiata o passata a un metodo.

  • Tipi di valore: Questi memorizzano i dati effettivi direttamente, di solito sullo stack. int, double, bool, char, enum, e struct sono tipi valore. Assegnando una variabile a un'altra, il valore viene copiato, quindi le due variabili rimangono indipendenti.
  • Tipologie di riferimento: Questi tipi memorizzano un riferimento (un indirizzo di memoria) che punta ai dati nell'heap. Stringhe, oggetti, array e istanze di classi sono tipi di riferimento. Copiare una variabile di riferimento copia solo l'indirizzo, quindi entrambe le variabili condividono lo stesso oggetto.

Una variabile di tipo valore non puรฒ mai essere null perchรฉ contiene sempre un valore, mentre un tipo riferimento non inizializzato assume per impostazione predefinita il valore null. Comprendere questa differenza aiuta a prevedere come le modifiche ai dati si propagano all'interno di un programma.

Conversione di tipo in C#

In C# รจ spesso necessario convertire un valore da un tipo di dati a un altro, ad esempio trasformando l'input dell'utente, che รจ sempre testo, in un numero. Questo processo รจ chiamato conversione di tipo e avviene principalmente in tre modi.

  • Conversione implicita: Il compilatore esegue la conversione automaticamente quando non vi รจ rischio di perdita di dati, ad esempio assegnando un int a un double. Non รจ richiesta alcuna sintassi particolare.
  • Conversione esplicita (casting): Si inserisce il tipo di destinazione tra parentesi, ad esempio (int)myDoubleIl casting puรฒ comportare la perdita di dati (la conversione di un double in un int elimina la parte decimale), quindi si accetta consapevolmente questo rischio.
  • Metodi ausiliari: La classe Convert (Convert.ToInt32) e il metodo Parse di ciascun tipo (int.Parse) convertono le stringhe in numeri, mentre ToString riconverte i valori in testo leggibile.

Scegliere la conversione corretta garantisce l'accuratezza dei dati e previene errori di runtime quando i tipi su entrambi i lati di un'assegnazione non corrispondono.

DOMANDE FREQUENTI

I tipi di dato float, double e decimal memorizzano tutti numeri decimali, ma differiscono per precisione e dimensioni. Il tipo float utilizza 4 byte con circa 7 cifre, il tipo double utilizza 8 byte con circa 15 cifre e il tipo decimal utilizza 16 byte per valori finanziari ad alta precisione.

Non c'รจ una vera differenza. `int` รจ un alias C# per il tipo `System.Int32` di .NET, quindi `int` e `Int32` vengono compilati esattamente allo stesso modo. La maggior parte degli sviluppatori scrive `int` per brevitร , mentre `Int32` rende esplicito il tipo del framework sottostante.

La stringa รจ un tipo di riferimento, poichรฉ memorizza un riferimento ai dati di tipo carattere presenti nell'heap. Tuttavia, si comporta come un tipo valore in un certo senso: le stringhe sono immutabili, quindi ogni modifica crea un nuovo oggetto stringa anzichรฉ modificare quello precedente.

Un tipo nullable consente a un tipo valore come int o bool di contenere anche il valore null, scritto con un punto interrogativo finale, ad esempio int?. รˆ utile per i dati opzionali e i campi di database, dove un valore mancante deve essere rappresentato in modo distinto da zero o falso.

Un carattere (char) puรฒ contenere esattamente un carattere Unicode e utilizza virgolette singole, come ad esempio 'A'. Una stringa puรฒ contenere una sequenza di zero o piรน caratteri e utilizza virgolette doppie. Un carattere (char) รจ un tipo valore, mentre una stringa รจ un tipo riferimento.

`var` deduce il tipo di una variabile in fase di compilazione, e tale tipo viene poi fissato con il supporto completo di IntelliSense. `dynamic` rimanda il controllo del tipo all'esecuzione, quindi gli errori di tipo si manifestano solo durante l'esecuzione. Utilizzare `var` per sicurezza e `dynamic` per scenari flessibili con associazione differita.

Sรฌ. GitHub Copilot suggerisce dichiarazioni di tipo, conversioni e codice boilerplate all'interno di Visual Studio e Visual Studio CodePuรฒ suggerire un tipo numerico appropriato o generare codice di analisi sintattica, ma รจ consigliabile esaminare l'output, poichรฉ i suggerimenti potrebbero non rilevare problemi di precisione o di overflow.

Sรฌ. ML.NET mappa i tipi di dati C# alle caratteristiche del modello, utilizzando tipi numerici come float e double per i dati di addestramento e stringhe per il testo. Le classi di dati fortemente tipizzate descrivono ogni colonna, in modo che i modelli di machine learning si integrino naturalmente nelle applicazioni C#.

Riassumi questo post con: