0Pricing
C# Academy · Lezione

Proprietà implementate automaticamente

Dichiari le proprietà con la sintassi concisa delle proprietà automatiche.

Proprietà implementate automaticamente è 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'è una proprietà

Una proprietà dall'esterno appare come un campo, ma è implementata tramite metodi di accesso (get e set). Le proprietà permettono di esporre i dati mantenendo il controllo sul modo in cui vengono letti e scritti.

using System;

class Program
{
    public string Name { get; set; }

    static void Main()
    {
        var p = new Program();
        p.Name = "Coddy";
        Console.WriteLine(p.Name);
    }
}

Sintassi delle proprietà automatiche

Una proprietà automatica usa { get; set; }. Il compilatore genera automaticamente un campo di supporto nascosto, quindi non è necessario scriverlo manualmente.

using System;

class Person
{
    public string FirstName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var person = new Person { FirstName = "Ada", Age = 36 };
        Console.WriteLine(person.FirstName + " is " + person.Age);
    }
}

Perché usare le proprietà invece dei campi

Le proprietà pubbliche offrono un'API stabile. In seguito è possibile aggiungere la convalida o modificare il modo in cui i dati vengono archiviati senza interrompere il codice chiamante. I campi pubblici non lo consentono.

using System;

class Account
{
    public decimal Balance { get; set; }
}

class Program
{
    static void Main()
    {
        var a = new Account();
        a.Balance = 100.50m;
        Console.WriteLine("Balance: " + a.Balance);
    }
}

Proprietà automatiche in sola lettura

Ometta set per rendere una proprietà di sola lettura. È possibile assegnarle un valore solo nel costruttore o tramite un inizializzatore, ottenendo valori immutabili per impostazione predefinita.

using System;

class Circle
{
    public double Radius { get; }

    public Circle(double radius)
    {
        Radius = radius;
    }
}

class Program
{
    static void Main()
    {
        var c = new Circle(5.0);
        Console.WriteLine("Radius: " + c.Radius);
    }
}

Valori predefiniti delle proprietà

È possibile assegnare un valore iniziale a una proprietà automatica usando = value;. Questa assegnazione viene eseguita quando l'oggetto viene creato, prima del corpo del costruttore.

using System;

class Settings
{
    public bool DarkMode { get; set; } = true;
    public int Volume { get; set; } = 50;
}

class Program
{
    static void Main()
    {
        var s = new Settings();
        Console.WriteLine("DarkMode: " + s.DarkMode + ", Volume: " + s.Volume);
    }
}

Setter privati

Un private set consente alla classe di modificare internamente il valore, impedendo però al codice esterno di cambiarlo. È un comune schema di incapsulamento.

using System;

class Counter
{
    public int Count { get; private set; }

    public void Increment()
    {
        Count++;
    }
}

class Program
{
    static void Main()
    {
        var counter = new Counter();
        counter.Increment();
        counter.Increment();
        Console.WriteLine("Count: " + counter.Count);
    }
}

Setter init-only

L'accessor init (C# 9+) consente l'assegnazione solo durante l'inizializzazione dell'oggetto. Dopo la costruzione, il valore non può più essere modificato.

using System;

class Product
{
    public string Name { get; init; }
    public decimal Price { get; init; }
}

class Program
{
    static void Main()
    {
        var p = new Product { Name = "Book", Price = 12.99m };
        Console.WriteLine(p.Name + ": " + p.Price);
    }
}

Proprietà con diversi livelli di accesso

Le proprietà seguono i normali modificatori di accesso. È possibile combinare livelli diversi: un getter pubblico con un setter privato oppure una proprietà interamente interna.

using System;

class User
{
    public string Id { get; private set; }

    public User(string id)
    {
        Id = id;
    }
}

class Program
{
    static void Main()
    {
        var u = new User("u-001");
        Console.WriteLine("User Id: " + u.Id);
    }
}

Proprietà automatiche dall'aspetto calcolato

Le proprietà automatiche archiviano dati, ma non eseguono calcoli. Se serve un valore calcolato, è necessario usare una proprietà completa, che verrà illustrata più avanti. Per ora, consideri le proprietà automatiche come un semplice meccanismo di archiviazione.

using System;

class Rectangle
{
    public double Width { get; set; }
    public double Height { get; set; }
}

class Program
{
    static void Main()
    {
        var r = new Rectangle { Width = 4, Height = 3 };
        double area = r.Width * r.Height;
        Console.WriteLine("Area: " + area);
    }
}

Aggiornare le proprietà automatiche

È possibile leggere e riassegnare una proprietà automatica scrivibile tutte le volte che si desidera, proprio come una variabile.

using System;

class Player
{
    public int Score { get; set; }
}

class Program
{
    static void Main()
    {
        var player = new Player();
        player.Score = 10;
        player.Score += 5;
        player.Score *= 2;
        Console.WriteLine("Score: " + player.Score);
    }
}

Mettere tutto insieme

Una tipica classe modello è composta principalmente da proprietà automatiche: alcune scrivibili, altre init-only e altre ancora con setter privati. In questo modo la classe rimane concisa e chiara.

using System;

class BankAccount
{
    public string Owner { get; init; }
    public decimal Balance { get; private set; }

    public void Deposit(decimal amount)
    {
        Balance += amount;
    }
}

class Program
{
    static void Main()
    {
        var acct = new BankAccount { Owner = "Lin" };
        acct.Deposit(250m);
        Console.WriteLine(acct.Owner + ": " + acct.Balance);
    }
}

Verifica rapida

Verifichi la Sua comprensione delle proprietà automatiche.

Riepilogo

Ha imparato che le proprietà automatiche usano { get; set; } con un campo di supporto generato dal compilatore. Le varianti includono { get; } in sola lettura, private set per una modifica controllata e init per valori impostabili una sola volta. Sono il modo predefinito per esporre i dati di una classe.

using System;

class Demo
{
    public string A { get; set; } = "settable";
    public string B { get; } = "read-only";
    public string C { get; init; } = "init-only";
}

class Program
{
    static void Main()
    {
        var d = new Demo { C = "changed-at-init" };
        Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
    }
}

Domande Frequenti

La lezione «Proprietà implementate automaticamente» è gratuita?

Sì — il testo completo di «Proprietà implementate automaticamente» è 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 «Proprietà implementate automaticamente»?

Dichiari le proprietà con la sintassi concisa delle proprietà automatiche. 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 «Proprietà implementate automaticamente»?

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. Proprietà implementate automaticamente
  2. Proprietà complete con campi di supporto
  3. Membri con corpo a espressione
  4. Indexer
← Torna a C# Academy