0Pricing
C# Academy · Lezione

Inferenza del tipo delle variabili locali con var

Utilizzi var quando il tipo è evidente.

Inferenza del tipo delle variabili locali con var è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Che cos'è var?

var consente al compilatore di dedurre il tipo di una variabile locale dall'inizializzatore. La variabile rimane comunque fortemente tipizzata in fase di compilazione.

using System;

class Program {
    static void Main() {
        var count = 10;
        Console.WriteLine(count);
    }
}

var non è dynamic

var viene determinato in fase di compilazione. var x = 10 è esattamente un int e in seguito non può contenere una stringa.

using System;

class Program {
    static void Main() {
        var name = "Ada";
        Console.WriteLine(name.GetType().Name);
    }
}

Inferenza dai valori letterali

Il compilatore legge il valore letterale per scegliere il tipo: 1 è int, 1.5 è double e "hi" è string.

using System;

class Program {
    static void Main() {
        var a = 1;
        var b = 1.5;
        var c = "hi";
        Console.WriteLine(a.GetType().Name + " " + b.GetType().Name + " " + c.GetType().Name);
    }
}

L'inizializzatore è obbligatorio

Poiché il tipo deriva dall'inizializzatore, le variabili var devono essere assegnate quando vengono dichiarate.

using System;

class Program {
    static void Main() {
        var total = 0;
        for (int i = 1; i <= 4; i++) total += i;
        Console.WriteLine(total);
    }
}

var con tipi evidenti

var è particolarmente utile quando il lato destro indica già il tipo, ad esempio con una chiamata al costruttore. In questo modo si evita la ripetizione.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var list = new List<int> { 1, 2, 3 };
        Console.WriteLine(list.Count);
    }
}

var con i risultati dei metodi

È possibile utilizzare var per i valori restituiti quando il nome del metodo rende chiaro il tipo.

using System;

class Program {
    static int Square(int n) { return n * n; }
    static void Main() {
        var result = Square(6);
        Console.WriteLine(result);
    }
}

var in foreach

var è pratico nei cicli foreach sulle raccolte i cui tipi degli elementi sono noti.

using System;

class Program {
    static void Main() {
        var names = new[] { "Sam", "Lee" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

Array con tipo dedotto

Un array con tipo implicito new[] { ... } deduce il tipo degli elementi dai valori.

using System;

class Program {
    static void Main() {
        var nums = new[] { 10, 20, 30 };
        Console.WriteLine(nums.Length);
    }
}

var è comunque sicuro dal punto di vista dei tipi

Poiché il tipo è fisso, un'assegnazione successiva con un tipo errato non viene compilata, proprio come avviene con una dichiarazione esplicita.

using System;

class Program {
    static void Main() {
        var x = 5;
        x = 10;
        Console.WriteLine(x);
    }
}

var e tipi anonimi

var è obbligatorio per i tipi anonimi, perché non hanno un nome che sia possibile scrivere.

using System;

class Program {
    static void Main() {
        var point = new { X = 3, Y = 4 };
        Console.WriteLine(point.X + ", " + point.Y);
    }
}

Vantaggio in termini di leggibilità

Se utilizzato correttamente, var riduce il rumore e mantiene il codice allineato, soprattutto con i nomi lunghi dei tipi generici.

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var scores = new Dictionary<string, int> { ["Ann"] = 90 };
        Console.WriteLine(scores["Ann"]);
    }
}

Verifica rapida

Verifichi la propria comprensione di var.

Riepilogo

var indica al compilatore di dedurre il tipo di una variabile locale dal suo inizializzatore, quindi la variabile rimane fortemente tipizzata e fissa in fase di compilazione, a differenza di dynamic.

Richiede un inizializzatore, elimina i nomi di tipo ridondanti ed è obbligatorio per i tipi anonimi. Migliora la leggibilità quando il tipo è già evidente.

Domande Frequenti

La lezione «Inferenza del tipo delle variabili locali con var» è gratuita?

Sì — il testo completo di «Inferenza del tipo delle variabili locali con var» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Inferenza del tipo delle variabili locali con var»?

Utilizzi var quando il tipo è evidente. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Inferenza del tipo delle variabili locali con var»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Inferenza del tipo delle variabili locali con var
  2. Quando evitare var
  3. Il tipo dynamic
  4. Espressioni new con tipo di destinazione
← Torna a C# Academy