Criar nova instância do tipo em C#

Muhammad Maisam Abbas 12 outubro 2023
Criar nova instância do tipo em C#

Este tutorial discutirá os métodos de criação de uma nova instância de um determinado tipo de dados em tempo de execução em C#.

Crie uma nova instância do tipo com a classe Activator em C#

Se quisermos criar uma nova instância de um tipo de dados em tempo de execução e não conhecermos o tipo de dados, podemos usar a classe Activator e a classe Type para atingir esse objetivo. A classe Activator fornece métodos para criar instâncias de objetos de tipos em C#. O método Activator.CreateInstance() é usado para criar uma instância de um tipo especificado com o construtor que melhor se adequa ao tipo especificado em C#. A classe Type representa um tipo de dados em C#. Podemos usar a classe Type para determinar o tipo de dados desconhecido neste cenário. O exemplo de código a seguir nos mostra como podemos criar uma nova instância de um tipo de dados em tempo de execução sem saber o tipo de dados usando a classe Activator e a classe Type em 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);
    }
  }
}

Resultado:

15

No código acima, criamos uma instância do tipo int32 no tempo de execução sem especificar o tipo de dados com o método Activator.CreateInstance() em C#. Primeiramente, determinamos o tipo da variável i com o método i.GetType() em C#. Então, criamos uma instância desse tipo com o método Activator.CreateInstance(). O método Activator.CreateInstance() encontra automaticamente o melhor construtor para o tipo de dados e cria uma instância com ele. Em seguida, inicializamos a nova instância n com o valor 15 e a imprimimos.

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