Junior — Middle
Qual é a diferença entre o tipo de dados Record e Struct no contexto da programação?
sobes.tech IA
Resposta da IA
Em C#, record e struct são tipos de dados diferentes com propósitos e comportamentos distintos.
-
Record é um tipo de referência (reference type), destinado à criação de objetos imutáveis (immutable) com suporte para a semântica de valor. Os records implementam automaticamente os métodos
Equals(),GetHashCode()eToString(), baseados nos valores das propriedades, o que facilita a comparação e cópia de objetos. -
Struct é um tipo de valor (value type), que é armazenado na pilha e copiado por valor. Structs são geralmente usados para objetos pequenos e leves, onde o desempenho e a minimização de alocações no heap são importantes.
Principais diferenças:
| Característica | Record (classe) | Struct |
|---|---|---|
| Tipo | Tipo de referência (reference type) | Tipo de valor (value type) |
| Mutabilidade | Geralmente imutável | Pode ser mutável |
| Armazenamento | No heap | Na pilha ou inline |
| Comparação | Por valor (valores das propriedades) | Por valor (todos os campos) |
| Uso | Para objetos complexos com lógica | Para dados leves |
Exemplo de record:
public record Person(string FirstName, string LastName);
var p1 = new Person("Иван", "Иванов");
var p2 = new Person("Иван", "Иванов");
Console.WriteLine(p1 == p2); // True, comparação por valores
Exemplo de struct:
public struct Point
{
public int X { get; set; }
public int Y { get; set; }
}
var point1 = new Point { X = 1, Y = 2 };
var point2 = point1; // cópia por valor
point2.X = 3;
Console.WriteLine(point1.X); // 1