Boa tarde pessoal. Sou novo aqui no forum e quero tirar uma duvida, quando usar o this. To fazendo um exercicio do livro use a cabeca c# (pagina 154) onde travei a uns 2 dias, pois quero entender 100% pra continuar lendo sei que deve ser coisa boba mas to com duvida sobre esse this no whoToTalkTo.TellMe(message, this); quem ele faz referencia? e teria outros exemplos pra me ajudar? desculpe se escrevi algo errado ou se faltou;
public void TellMe(string message, Elephant whoSaidIt){
MessageBox.Show(whoSaidIt.name + " says: " + message);
}
public void SpeakTo(Elephant whoToTalkTo, string message){
whoToTalkTo.TellMe(message, this);
}
aqui o livro manda adicionar (lloyd = lucinda;) antes da instrucao que redefine as referencias
ai pede pra adicionar no button 4 esse codigo
lloyd.TellMe(“HI”, lucinda); <----
O this
é usado basicamente em dois grandes casos:
- Quando você precisa se referenciar a um objeto
- Quando você precisa acessar atributos internos de uma classe
O primeiro caso é o que você postou aqui: o this
está se referindo ao objeto que contém o método SpeakTo()
.
Como SpeakTo()
chama o TellMe()
você usa o this
para passar o objeto tipo Elephant
como o argumento whoSaidIt
.
Já o segundo caso seria algo da seguinte forma:
class foo
{
private int a;
//construtor
public foo(int a)
{
this.a = a;
}
}
Repara que o this.a
se refere ao atributo a
da classe foo
. Enquanto o a
sozinho é o parâmetro recebido na função. (um construtor, nesse caso).
Vou deixar um link do site da MIcrosoft que contém uns exemplos em código mais completos para ficar mais fácil de você entender.
Site da microsoft
1 curtida
Obrigado pela excelecente explicacao. mas eu fiquei um pouco na duvida com a primeira explicacao.
no caso… a referencia this seria pro objeto lloyd?
no modo mais transparente o metodo estaria falando isso?
public void SpeakTo(Elephant whoToTalkTo, string message){
whoToTalkTo.TellMe(message, Lloyd);
}
//seria isso que o this estaria falando? aponte para loyd?