Skip to main content

Record | with

  • Record | with

C# 9.0 - Apresentando Records

  • Record é do tipo de referência (fica na heap)

  • Record struct é do tipo valor (fica na stack)

  • Cria dados imutáveis

    record Person(string FirstName, string LastName);
    //dessa forma os dados precisam ser passados quando instânciar a classe
    // e não poderão ser alterados

    //estilo posicional
    public record Person
    {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    }

    //se eu declarar record assim, eles não serão imutáveis

    //Usando a criação nominal, então, podemos dizer que os registros não são imutáveis por padrão .

    public record Person
    {
    public string FirstName { get; init; }
    public string LastName { get; init; }
    }

    //com init ai eles se tornam imutáveis
  • Cria um clone

    var book = book3 with {Language = "Italian"};

Vantagens de se usar records

  • Imutabilidade e Concorrência
    • A principal vantagem de usar records em cenários concorrentes é a imutabilidade. Quando um objeto é imutável, seus dados não podem ser alterados após sua criação. Isso significa que, uma vez que um record é criado, não há o risco de alterações simultâneas de múltiplos threads interferirem uns com os outros, o que ajuda a evitar condições de corrida e outros problemas típicos de concorrência.
    • Imutabilidade por padrão com init
    • Comparação por valor (Equals e == compararam os valores, não a referência)