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
- Proprietà implementate automaticamente
- Proprietà complete con campi di supporto
- Membri con corpo a espressione
- Indexer