Palavra chave New no C#
4 participantes
Página 1 de 1
Palavra chave New no C#
Bom... precisava saber o que a palavra chave new faz no C#... diz que ela cria uma instância... mas não entendi... uma instância ao meu ver é isso...
- Código:
using System.Collections;
using System.Colections.Generic;
using UnityEngine;
public class Classe : MonoBehaviour {
private Classe ClasseSimples = new Classe(); //ClasseSimples é uma instância de Classe
}
GattiMene- Membro
- PONTOS : 2338
REPUTAÇÃO : 2
Respeito as regras :
Re: Palavra chave New no C#
Acho que isso seria só um exemplo de como cria a class
francisco barroso- Programador
- PONTOS : 2613
REPUTAÇÃO : 59
Respeito as regras :
Re: Palavra chave New no C#
Eu faço assim
Ex
- Código:
using System.Collections;
using System.Colections.Generic;
using UnityEngine;
public class Classe : MonoBehaviour {
public static Classe ClasseSimples; //ClasseSimples é uma instância de Classe
void Start () {
ClasseSimples = this;//a instancia
}
}
Ex
- Código:
using System.Collections;
using System.Colections.Generic;
using UnityEngine;
public class Classe : MonoBehaviour {
public int numero;
public float tempo;
public bool ativao = false;
public static Classe ClasseSimples; //ClasseSimples é uma instância de Classe
void Start () {
ClasseSimples = this;//a instancia
}
}
- Código:
using System.Collections;
using System.Colections.Generic;
using UnityEngine;
public class Classe2 : MonoBehaviour {
void Start () {
Classe.ClasseSimples.numero = 5;//instanciando
Classe.ClasseSimples.tempo = 15;//instanciando
Classe.ClasseSimples.ativao = true;//instanciando
}
}
Re: Palavra chave New no C#
Em orientação a objetos a palavra reservada "new" cria uma instancia da classe (um objeto), para que você possa manipular suas propriedades e métodos, por exemplo:
Classe base:
Criando instâncias a partir dessa classe e setando valores a elas:
Chamando métodos para esses objetos:
O operador "new" irá alocar um espaço na memória para os dados da sua classe, com isso, ele automaticamente chama o construtor dessa classe.
É preferível utilizar um construtor escrito pelo próprio programador, do que deixar o compilador criar um construtor default para a class, dessa forma, podemos instanciar o objeto setando seus valores diretamente no momento de sua inicialização:
Veja como a instanciação do objeto 'p' fica mais ''compacta'' ao utilizar o construtor:
Na Unity nós utilizamos o paradigma "Orientação a Componentes", ou seja, seguindo do pressuposto de que tudo seria um componente.
A orientação a componentes é um paradigma relativamente novo, e pode ser uma 'extensão' da Orientação a Objetos.
Por isso que na Unity não utilizamos com tanta frequência esse conceito de instância utilizando 'new'.
Não teríamos acesso à propriedade "velocity" do rigidbody do objeto apenas fazendo isso:
Da forma acima, nós só estamos apenas criando uma instância da classe Rigidbody, mas como a Unity vai saber qual componente Rigidbody na cena você quer fazer acesso?
Para criar adicionar ou 'obter' componentes, nós usamos respectivamente o AddComponent e o GetComponent, dessa forma, as propriedades e métodos que um objeto terá não é manipulado através de instâncias de classes, mas sim de componentes.
Porém, quando utilizamos algum código com POO puro, sem se utilizar de componentes (no caso de heranças de classe que não implementam o monobehaviour) nós iremos utilizar as instâncias com "new" para acessar e manipular propriedades e métodos de objetos que não são nativos da Unity.
Classe base:
- Código:
public class Pessoa
{
public string nome, sobrenome;
public int idade;
public enum Generos { Feminino, Masculino };
public Generos genero;
public string MostrarNomeCompleto()
{
return this.nome + " " + this.sobrenome;
}
}
Criando instâncias a partir dessa classe e setando valores a elas:
- Código:
// #1 Sintaxe preferível:
Pessoa p1 = new Pessoa(){
nome = "João",
sobrenome = "da Silva",
idade = 20,
genero = Pessoa.Generos.Masculino
};
// #2 Sintaxe comumente usada:
Pessoa p2 = new Pessoa();
p2.nome = "Carla";
p2.sobrenome = "dos Santos";
p2.idade = 35;
p2.genero = Pessoa.Generos.Feminino;
Chamando métodos para esses objetos:
- Código:
Debug.Log(p1.MostrarNomeCompleto()); // Output: "João da Silva"
Debug.Log(p2.MostrarNomeCompleto()); // Output: "Carla dos Santos"
O operador "new" irá alocar um espaço na memória para os dados da sua classe, com isso, ele automaticamente chama o construtor dessa classe.
É preferível utilizar um construtor escrito pelo próprio programador, do que deixar o compilador criar um construtor default para a class, dessa forma, podemos instanciar o objeto setando seus valores diretamente no momento de sua inicialização:
- Código:
public class Pessoa
{
public string nome, sobrenome;
public int idade;
public enum Generos { Feminino, Masculino };
public Generos genero;
public string MostrarNomeCompleto()
{
return this.nome + " " + this.sobrenome;
}
public Pessoa(string nome, string sobrenome, int idade, Generos genero) {
this.nome = nome;
this.sobrenome = sobrenome;
this.idade = idade;
this.genero = genero;
}
}
Veja como a instanciação do objeto 'p' fica mais ''compacta'' ao utilizar o construtor:
- Código:
Pessoa p = new Pessoa("Mayara", "Leone", 24, Pessoa.Generos.Feminino);
Na Unity nós utilizamos o paradigma "Orientação a Componentes", ou seja, seguindo do pressuposto de que tudo seria um componente.
A orientação a componentes é um paradigma relativamente novo, e pode ser uma 'extensão' da Orientação a Objetos.
Por isso que na Unity não utilizamos com tanta frequência esse conceito de instância utilizando 'new'.
Não teríamos acesso à propriedade "velocity" do rigidbody do objeto apenas fazendo isso:
- Código:
Rigidbody rb = new Rigidbody();
if (rb.velocity > 0)
// {....}
Da forma acima, nós só estamos apenas criando uma instância da classe Rigidbody, mas como a Unity vai saber qual componente Rigidbody na cena você quer fazer acesso?
Para criar adicionar ou 'obter' componentes, nós usamos respectivamente o AddComponent e o GetComponent, dessa forma, as propriedades e métodos que um objeto terá não é manipulado através de instâncias de classes, mas sim de componentes.
- Código:
void Start(){
Rigidbody rb = GetComponent<Rigidbody>();
}
void Update(){
if (rb.velocity > 0) // Fazendo acesso correto da propriedade do componente
{.....}
}
Porém, quando utilizamos algum código com POO puro, sem se utilizar de componentes (no caso de heranças de classe que não implementam o monobehaviour) nós iremos utilizar as instâncias com "new" para acessar e manipular propriedades e métodos de objetos que não são nativos da Unity.
Tópicos semelhantes
» CHAVE DE ASSINATURA
» Tem como achar uma Letra/palavra dentro de uma string?
» [DUVIDA]como faço uma chave exclusiva pra um save
» Random sem repetir a palavra
» Procurar palavra na primeira coluna de array C#
» Tem como achar uma Letra/palavra dentro de uma string?
» [DUVIDA]como faço uma chave exclusiva pra um save
» Random sem repetir a palavra
» Procurar palavra na primeira coluna de array C#
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos