Crea nuova istanza dal tipo in C#

Muhammad Maisam Abbas 12 ottobre 2023
Crea nuova istanza dal tipo in C#

Questa esercitazione discuterà i metodi per creare una nuova istanza di un determinato tipo di dati in fase di esecuzione in C#.

Crea una nuova istanza dal tipo con la classe Activator in C#

Se vogliamo creare una nuova istanza di un tipo di dati in fase di esecuzione e non conosciamo il tipo di dati, possiamo utilizzare la classe Activator e la classe Type per raggiungere questo obiettivo. La classe Activator fornisce metodi per creare istanze di oggetti da tipi in C#. Il metodo Activator.CreateInstance() viene utilizzato per creare un’istanza di un tipo specificato con il costruttore che meglio si adatta al tipo specificato in C#. La classe Type rappresenta un tipo di dati in C#. Possiamo usare la classe Type per determinare il tipo di dati sconosciuto in questo scenario. Il seguente esempio di codice ci mostra come possiamo creare una nuova istanza di un tipo di dati in fase di esecuzione senza conoscere il tipo di dati usando la classe Activator e la classe Type in C#.

using System;

namespace new_object_from_type {
  class Program {
    static void Main(string[] args) {
      int i = 123;
      Type t = i.GetType();
      Object n = Activator.CreateInstance(t);
      n = 15;
      Console.WriteLine(n);
    }
  }
}

Produzione:

15

Nel codice sopra, abbiamo creato un’istanza del tipo int32 al runtime senza specificare il tipo di dati con il metodo Activator.CreateInstance() in C#. All’inizio, abbiamo determinato il tipo della variabile i con il metodo i.GetType() in C#. Quindi, abbiamo creato un’istanza di quel tipo con il metodo Activator.CreateInstance(). Il metodo Activator.CreateInstance() trova automaticamente il miglior costruttore per il tipo di dati e crea un’istanza con esso. Abbiamo quindi inizializzato la nuova istanza n con il valore 15 e l’abbiamo stampata.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn