Criar nova instância do tipo em C#
![Criar nova instância do tipo em C#](/img/Csharp/feature-image---create-new-instance-from-type-in-csharp.webp)
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.
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