Q1. In quali di queste situazioni le interfacce sono migliori delle classi astratte?
Quando è necessario definire le caratteristiche di un tipo di oggetto, utilizzare un'interfaccia. Quando è necessario definire le capacità di un tipo di oggetto, utilizzare una classe astratta.
Le interfacce sono una reliquia delle versioni precedenti di C# e sono intercambiabili con la nuova funzionalità delle classi astratte.
Quando è necessario un elenco di capacità e dati che sono agnostici rispetto alle classi, utilizzare un'interfaccia. Quando è necessario che un certo tipo di oggetto condivida caratteristiche, utilizzare una classe astratta.
Dovresti utilizzare sia un'interfaccia che una classe astratta quando si definisce un oggetto complesso.
Q2. Quale affermazione è vera per i delegati?
I delegati non sono supportati nella versione attuale di C#
Non possono essere utilizzati come callback.
Solo le variabili possono essere passate ai delegati come parametri.
Q5. Qual è la differenza tra le parole chiave ref e out?
Le variabili passate per specificare che il parametro è un parametro di output, mentre ref specifica che una variabile può essere passata a una funzione senza essere inizializzata.
Le variabili passate a ref possono essere passate a una funzione senza essere inizializzate, mentre out specifica che il valore è un valore di riferimento che può essere modificato all'interno del metodo di chiamata.
Le variabili passate a out possono essere passate a una funzione senza essere inizializzate, mentre ref specifica che il valore è un valore di riferimento che può essere modificato all'interno del metodo di chiamata.
Le variabili passate a ref specificano che il parametro è un parametro di output, mentre out specifica che una variabile può essere passata a una funzione senza essere inizializzata.
Q16. In che ordine verrebbero stampati i nomi dei dipendenti in questo esempio sulla console?
string[]employees = { "Joe", "Bob", "Carol", "Alice", "Will" };IEnumerable<string> employeeQuery = from person in employees
orderby person
select person;
foreach(string employee in employeeQuery)
{
Console.WriteLine(employee);}