C# Flashcards

1
Q

Qual è la differenza tra una struttura (struct) e una classe in C#?

A

Le classi e le strutture in C# contengono dati e metodi.

Le strutture sono tipi di valore e sono utilizzate per rappresentare dati semplici mentre le classi sono utilizzate per rappresentare oggetti complessi e vengono passate per riferimento.

Dentro le classi:
- I costruttori sono metodi che vengono eseguiti quando un oggetto viene inizializzato.
- Gli accessori (getter) e i mutatori (setter) consentono di leggere e modificare i dati all’interno di una classe o struttura.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cos’è l’upcasting?

A

L’upcasting consente di trattare un oggetto derivato come se fosse un’istanza della classe base.

static void Main(string[] args)
    {
        // Creazione di un'istanza di Car
        Car myCar = new Car();

        // Upcasting dell'istanza di Car a Vehicle
        Vehicle myVehicle = myCar;

        // Ora possiamo chiamare i metodi di Vehicle sull'istanza di Car upcasted
        myVehicle.Move(); // Chiamerà il metodo Move() di Vehicle
        // myVehicle.Accelerate();  // Questa riga genererà un errore in quanto il tipo Vehicle non ha il metodo Accelerate()
        Console.ReadLine();
    }

In questo esempio, myCar è un’istanza della classe Car. Viene poi effettuato l’upcasting di myCar al tipo Vehicle, consentendo l’accesso solo ai membri di Vehicle. Anche se myVehicle è un’istanza di Car, poiché è stata upcasted a Vehicle, non possiamo più accedere ai membri specifici di Car su di esso, come il metodo Accelerate().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Come si gestiscono gli errori?

A
  • Le eccezioni sono utilizzate per gestire gli errori in modo che non interrompano bruscamente il flusso del programma.
    • L’utilizzo di try-catch è un modo di gestire le eccezioni in maniera orientata agli oggetti.
    • L’approccio tradizionale include l’uso di istruzioni if e cicli for per gestire gli errori.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cosa significa la parola chiave “sealed” in C#?

A

La parola chiave “sealed” viene utilizzata per impedire che una classe venga ereditata da altre classi. Quando una classe viene dichiarata come “sealed”, non può essere utilizzata come classe base per altre classi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cosa sono gli indici out-of-range e come possono essere gestiti in C#?

A

Gli indici out-of-range si verificano quando si tenta di accedere a un elemento di una raccolta usando un indice che non esiste. In C#, questo può causare un’eccezione di tipo “IndexOutOfRangeException”. Per gestire questo tipo di situazioni, è possibile utilizzare controlli di lunghezza prima di accedere agli elementi della raccolta o catturare e gestire l’eccezione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual è la differenza tra “ref” e “out” nei parametri dei metodi in C#?

A

La parola chiave “ref” viene utilizzata per passare un parametro per riferimento, consentendo al metodo di modificare il valore della variabile passata. La parola chiave “out” viene utilizzata per passare un parametro per riferimento e richiede che il metodo inizializzi la variabile prima di restituirla.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Come si può gestire l’accesso ai dati?

A
  • Il Data Access Layer (DAL) è un componente architetturale che separa la logica di accesso ai dati dalla logica di business.
    • Il DAL fornisce un’interfaccia per interagire con le sorgenti di dati come database, file o servizi web.
    • Framework come Entity Framework semplificano l’accesso ai dati attraverso il mapping oggetto-relazionale.

In particolare per quanto riguarda la connesione:
- Utilizzando il namespace System.Data.SqlClient, è possibile gestire le connessioni al database SQL Server in C#.
- È necessario stabilire una connessione, eseguire comandi SQL e leggere i risultati utilizzando SqlDataReader.
- Il Data Access Layer (DAL) separa la logica di accesso ai dati dalla logica di business, migliorando la modularità e la manutenibilità dell’applicazione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quali sono i Modificatori di Accesso?

A
  • public: Visibile ovunque.
    • private: Accessibile solo all’interno della classe stessa.
    • protected: Accessibile dalle classi figlie.
    • internal: Accessibile all’interno dell’assembly corrente.
    • protected internal: Accessibile all’interno dell’assembly corrente o dalle classi figlie anche in assembly esterni.
    • private protected: Accessibile solo all’interno dell’assembly corrente o dalle classi figlie nello stesso assembly.
      -Static
      Il modificatore static in C# viene utilizzato per dichiarare membri di una classe che appartengono alla classe stessa anziché a istanze specifiche della classe.
      I membri statici sono condivisi tra tutte le istanze della classe e possono essere acceduti utilizzando il nome della classe anziché un’istanza specifica della classe.
      I membri statici non possono accedere ai membri non statici della classe e possono essere utilizzati per definire costanti, metodi di utilità o variabili condivise tra tutte le istanze della classe.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quali sono le differenze tra c# e VB.NET?

A
  • VB.NET è il successore di Visual Basic 6 e implementa il .NET Framework, mentre C# è case sensitive e non lo è. VB.NET include la funzionalità di shadow che consente di implementare un membro di classe di base senza sovrascrivere il membro, mentre in C# si ha il concetto di hiding.
  • Ci sono differenze sintattiche tra i due linguaggi. Ad esempio, per dichiarare una variabile si usano “declarators” in C# e “Private, Public, Friend, Protected, Static, Shared, Dim” in VB.NET. Per creare un nuovo oggetto, si usa “New” in C# e “New, CreateObject()” in VB.NET. Per riferirsi all’oggetto corrente, si usa “this” in C# e “Me” in VB.NET. Per dichiarare una classe, si usa “Class” in C# e “Class” in VB.NET.
  • C# fa parte della famiglia di linguaggi C, mentre VB.NET no.
  • In C# non ci sono gli eventi e la gestione degli eventi è più complessa rispetto a VB.NET, dove gli eventi sono collegati automaticamente.
  • C’è meno bisogno di casting in C# rispetto a VB.NET.
    In conclusione, se si è principianti e si preferisce una struttura e una sintassi più semplice, VB.NET potrebbe essere la scelta migliore. Tuttavia, se si cerca una soluzione moderna con funzionalità aggiornate e buone opportunità di lavoro, C# potrebbe essere preferibile.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Parlami di .NET

A

In sintesi, il framework .NET è una piattaforma di sviluppo software fondamentale per la creazione di applicazioni. Alcuni punti chiave includono:

  • Il Common Language Runtime (CLR) è il cuore del framework .NET, che esegue il codice in un ambiente gestito.
  • IL (Intermediate Language) è il linguaggio intermedio in cui viene compilato il codice C# prima di essere eseguito dal CLR.
  • Il ciclo di compilazione comprende la traduzione da C# a IL, l’esecuzione da parte del CLR e la conversione in codice nativo per la macchina.
  • Il framework .NET è stato introdotto nel 2000 come strumento fondamentale per lo sviluppo di applicazioni.
  • .NET Core, introdotto nel 2016, è una versione più leggera del framework .NET che si posiziona un livello sotto il CLR standard, chiamato Core CLR, concentrando l’attenzione sulle funzionalità più recenti e modificando il livello di astrazione.
  • Anche se .NET Core è più recente, supporta ancora molte delle applicazioni che utilizzano il framework .NET standard. Tuttavia, con l’avvento di .NET 5, il termine “framework” è stato eliminato dal nome.
  • .NET Standard era una specifica che forniva una sorta di ponte tra .NET Framework e .NET Core, consentendo di utilizzare librerie su entrambe le piattaforme. Tuttavia, non è più necessario poiché .NET Core ha sostituito .NET Standard.
  • Quindi, per riassumere, abbiamo il .NET Framework che rappresenta uno strato di astrazione che traduce il codice in linguaggio intermedio, .NET Core/.NET che è un livello di astrazione più basso e .NET Standard che era un ponte tra le due piattaforme ma non è più necessario.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cos’è C#?

A

C# è un linguaggio orientato agli oggetti, sicuro dal punto di vista dei tipi e gestito che viene compilato dal framework .Net per generare il Microsoft Intermediate Language.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cos’è un Array Jagged?

A

Un Array Jagged è un array che contiene elementi di tipo array. Gli elementi possono essere di dimensioni e dimensioni diverse. Possiamo anche chiamare un Array Jagged un Array di array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

A cosa serve “using”?

A

Il blocco ‘using’ viene utilizzato per ottenere una risorsa, elaborarla e quindi eliminarla automaticamente quando l’esecuzione del blocco è completata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qual è lo scopo dell’operatore “this” in C#?

A

L’operatore “this” viene utilizzato all’interno di una classe per riferirsi all’oggetto corrente o all’istanza della classe. Viene utilizzato per distinguere tra gli attributi/metodi della classe corrente e quelli passati come parametri o definiti in altre classi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cos’è la serializzazione?

A

La serializzazione è il processo di conversione di un oggetto in un flusso di byte per il trasporto attraverso una rete. Perché un oggetto sia serializzabile, deve implementare l’interfaccia ISerialize. La deserializzazione è il processo inverso di creazione di un oggetto da un flusso di byte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qual è la differenza tra un metodo virtuale e un metodo astratto in C#?

A

Un metodo virtuale ha un’implementazione predefinita ma può essere sovrascritto dalle classi derivate. Un metodo astratto, invece, non ha un’implementazione predefinita e deve essere implementato dalle classi derivate.

17
Q

Come si crea un’istanza di una classe in C#?

A

Si crea un’istanza di una classe utilizzando la parola chiave new, seguita dal costruttore della classe. Ad esempio: MiaClasse oggetto = new MiaClasse();.

18
Q

Qual è la differenza tra == e .Equals() in C#?

A

L’operatore == confronta gli oggetti per uguaglianza di riferimento, mentre il metodo .Equals() confronta gli oggetti per uguaglianza di valore, a meno che non sia stato sovrascritto per effettuare un confronto personalizzato.

19
Q

Cosa sono i metodi di estensione in C#?

A

I metodi di estensione sono metodi statici che permettono di aggiungere nuovi metodi a classi esistenti senza modificarle direttamente, estendendo così le funzionalità delle classi senza ereditarle.

20
Q

Cos’è la programmazione a oggetti?

A

La programmazione a oggetti è un approccio di programmazione che utilizza oggetti per rappresentare dati e comportamenti, consentendo di organizzare il codice in modo più modulare e riusabile.