1
resposta

struct

pessoal la na parte de struct o instrutor fala que struct e mais adequado para se trabalhar o imutabilidade , nao entendi pq ele falou isso, podem me dar um exemplo?

1 resposta

Olá Luan, tudo bem?

Isso acontece porque struct é um tipo de valor. Ao contrário de uma variável que recebe um objeto de uma classe, você cria duas variáveis, na primeira define um valor e na segunda define a primeira variável como valor, você terá duas variáveis com valores iguais. Se alterar o valor de alguma das duas, não influenciará no valor da outra, diferentemente de um objeto de uma classe.

public struct Estrutura
{
    public int Valor;

    public override string ToString()
    {
        return $"Valor = {Valor}";
    }
}

Defini uma struct que recebe um inteiro. Agora vamos para o método Main():

Estrutura estrutura = new Estrutura() { Valor = 15 };
Estrutura novaEstrutura = estrutura;
estrutura.Valor = 18;

Console.WriteLine(estrutura);
Console.WriteLine(novaEstrutura);

A saída do console será:

Valor = 18
Valor = 15

A imutabilidade que ele se referiu é que para alterar uma variável do tipo valor só é possível se alterar ela diretamente e não por referência como os objetos de classes.

Para valores realmente imutáveis, é recomendado utilizar constantes para um valor pré-definido ou então usar a palavra reservada readonly, onde é equivalente a uma propriedade sem set.

Para mais informações sobre structs neste link da documentação.

Para mais informações sobre constantes neste link da documentação

Para mais informações sobre readonly neste link da documentação

Espero ter ajudado. Bons estudos!