Formas de criar objetos em C#?

Tenho uma dúvida gostaria de saber se alguém pode me ajudar. Sei como criar objetos de uma classe dessa forma:

public class Pessoa
{
  public string nome;
}

 Pessoa obj1 = new Pessoa();

Mas já vi algo desse tipo também:

Pessoa variavel = variavel.getcomponent<Pessoa>();

Essa outra forma é considerada como outro jeito de criar objetos?

Não, não é. Objetos são criados através de new, como no primeiro exemplo.

No seu segundo exemplo, getcomponent() é um método que retorna um objeto. Ele pode estar criando esse objeto internamente nesse método (com new) ou trazendo esse objeto de algum outro lugar. Dependendo da arquitetura, ele pode inclusive retornar null, indicando que um objeto do tipo Pessoa não foi encontrado ou criado.

Por exemplo, o método getcomponent() pode ter a seguinte estrutura:

public Pessoa getcomponent(){
  return new Pessoa(); // note a presença de "new"
}

Obs: estou desconsiderando o uso de generics para deixar o código mais simples.

Abraço.

1 curtida

O operador new é a palavra chave para criação de instâncias de classes e struct (além disso também pode ser utilizado como modificador e restrição), na arquitetura .NET Framework.

Em caso especifico eu consigo retornar uma instância de um outro método de outro classe, talvez seja isso a sua duvida, e também existe padrão de projetos para criar instância de classe.

Resumindo a unica forma de criar instância é pelo operador new como por exemplo:

using System;
					
public class Program
{
	public static void Main()
	{
		People p1 = new People(); //Maneira tradicional;
		People p2 = People.Create(); //Padrão de projeto Fabrica de Instância;
		
		Operation op = new Operation();
		People p3 = op.GetPeople(); //Pela instância de outra classe;
		
		Console.WriteLine(p1);
		Console.WriteLine(p2);
		Console.WriteLine(p3);
	}
}

public class People
{
	public int Id {get;set;}
	public string Name {get; set;}
	
	public static People Create()
	{
		return new People();
	}
}

public class Operation 
{
	public People GetPeople ()
	{
		return new People();
	}
}
1 curtida