Forma abreviada para Propriedades
2 participantes
Página 1 de 1
Forma abreviada para Propriedades
Estou estudando o uso as Propriedades e tenho estes scripts:
nao estou conseguindo debugar o valor definido em 500 da variável strength, ele está saindo como 0 no console.
mas o valor 100 para health está saindo normal no console.
o que muda no primeiro script foi só forma de escrever a propriedade para as variáveis health e strength.
sabe-se que a forma {get; set;} é a forma abreviada para propriedades.
Por que não consigo imprimir 500 no console? escrevi a propriedade de forma errada?
- Código:
public class Status {
private int health = 100;
private float strength = 500f;
public float Strength { get; set; }
public int Health {
get { return health; } // Também pode ser: get => health;
set { health = value; } // Também pode ser: set => health = value;
}
}
- Código:
public class Player : MonoBehaviour {
Status stats = new Status();
void Start() {
Debug.Log("Player Health: " + stats.Health);
Debug.Log("Player Strength: " + stats.Strength);
}
}
nao estou conseguindo debugar o valor definido em 500 da variável strength, ele está saindo como 0 no console.
mas o valor 100 para health está saindo normal no console.
o que muda no primeiro script foi só forma de escrever a propriedade para as variáveis health e strength.
sabe-se que a forma {get; set;} é a forma abreviada para propriedades.
Por que não consigo imprimir 500 no console? escrevi a propriedade de forma errada?
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Forma abreviada para Propriedades
A forma abreviada te possibilita justamente evitar que você precise de duas variáveis como no caso do Health.
A propriedade Strength é independente, quando você fizer referência fará só a ela, e nenhum momento você está retornando o valor dela para a variável strength como você fez com Health.
Aqui eu fiz uma aula interessante sobre Properties:
http://compilemosfacil.blogspot.com/2018/09/encapsulamento.html?m=1
A propriedade Strength é independente, quando você fizer referência fará só a ela, e nenhum momento você está retornando o valor dela para a variável strength como você fez com Health.
Aqui eu fiz uma aula interessante sobre Properties:
http://compilemosfacil.blogspot.com/2018/09/encapsulamento.html?m=1
Re: Forma abreviada para Propriedades
MayLeone escreveu:A forma abreviada te possibilita justamente evitar que você precise de duas variáveis como no caso do Health.
A propriedade Strength é independente, quando você fizer referência fará só a ela, e nenhum momento você está retornando o valor dela para a variável strength como você fez com Health.
Aqui eu fiz uma aula interessante sobre Properties:
http://compilemosfacil.blogspot.com/2018/09/encapsulamento.html?m=1
quer dizer então que eu não preciso escrever duas coisas, como:?
- Código:
private int _strength = 500;
public int Strength { get; set; }
eu atribui o valor de 500 para strength para poder depois, em algum script externo, poder ler esse valor, como eu fiz ao debugar a variável health, pegando o valor 100 e mostrando no console.
Se eu uso a forma abreviada para a variável strength, basta escrever só public int Strength { get; set; }?
Com essa forma abreviada então eu só posso atribuir um valor para a variável strength (ou pegar o seu valor) em um script externo?
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Forma abreviada para Propriedades
Consegui entender melhor esse uso de propriedade autoimplementada, quando se usa a autoimplementada a sintaxe não é escrever o campo e depois a propriedade com o nome do campo como eu fiz:
[list=linenums]
[*]private int _strength = 500;
[*]public int Strength { get; set; }
[/list]
a sintaxe correta é escrever apenas a propriedade que aí já encapsula tudo, tanto o campo quanto a propriedade:
[list=linenums]
[*]public int Strength { get; set; } = 500;
[/list]
Ai se eu quiser inicializar a propriedade com algum valor basta fazer o que fiz acima.
lendo o docs.microsoft vi onde estava errando.
[list=linenums]
[*]private int _strength = 500;
[*]public int Strength { get; set; }
[/list]
a sintaxe correta é escrever apenas a propriedade que aí já encapsula tudo, tanto o campo quanto a propriedade:
[list=linenums]
[*]public int Strength { get; set; } = 500;
[/list]
Ai se eu quiser inicializar a propriedade com algum valor basta fazer o que fiz acima.
lendo o docs.microsoft vi onde estava errando.
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Qual melhor forma de fazer um terreno para android?
» [Dúvida] PANEL UI acessar propriedades
» COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
» Como faço para este item aparecer no meu inventário de forma correta?
» Usar Google Play Games ou (outra forma) para subir dados do jjogador.
» [Dúvida] PANEL UI acessar propriedades
» COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
» Como faço para este item aparecer no meu inventário de forma correta?
» Usar Google Play Games ou (outra forma) para subir dados do jjogador.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos