Inizializzatori di oggetti
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 8 di 70.
Gli inizializzatori di oggetti offrono un modo pratico per impostare i valori delle proprietà quando si crea un oggetto, senza chiamare un costruttore con molti parametri.
Metodo tradizionale usando il costruttore
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";Usare la sintassi degli inizializzatori di oggetto
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Inizializzatori di oggetti con costruttori
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
public Person(string name)
{
Name = name;
}
}
// Il costruttore imposta Name, l'inizializzatore imposta le altre proprietà
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};Inizializzatori di oggetti annidati
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Creazione di più oggetti con inizializzatori
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };Gli inizializzatori di oggetti rendono il codice più pulito e leggibile. Le proprietà vengono impostate dopo l'esecuzione del costruttore. Puoi usare gli inizializzatori con o senza parametri del costruttore, rendendo la creazione degli oggetti flessibile e concisa.
Sfida
MedioCrea tre oggetti Student usando diversi approcci di inizializzazione degli oggetti:
- student1: usa il costruttore predefinito con un inizializzatore di oggetto per impostare tutte le proprietà (Name, StudentId, Major, GPA) usando i dati inseriti
- student2: usa un inizializzatore di oggetto per impostare solo Name = "Bob" e Major = "Engineering"
- student3: usa il costruttore con "Charlie" come parametro, poi usa un inizializzatore di oggetto per impostare StudentId = 54321, Major = "Mathematics", GPA = 3.5
Provalo tu
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
int studentId = int.Parse(Console.ReadLine());
string major = Console.ReadLine();
double gpa = double.Parse(Console.ReadLine());
// TODO: Crea student1 usando un inizializzatore di oggetti con tutte le proprietà
// Usa il costruttore predefinito e imposta Name, StudentId, Major e GPA
// TODO: Crea student2 usando un inizializzatore di oggetti con solo Name e Major
// Name deve essere "Bob" e Major deve essere "Engineering"
// TODO: Crea student3 usando il costruttore con il parametro name "Charlie"
// Poi usa un inizializzatore di oggetti per impostare StudentId = 54321, Major = "Mathematics" e GPA = 3.5
Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online