Entendendo Structs em C#: Como Definir e Usar Tipos de Valor
Em C#, uma struct (estrutura) é um tipo de dado de valor. Permite que uma única variável mantenha dados relacionados de vários tipos. A palavra-chave struct cria uma estrutura.
Estruturas representam registros. Exemplo: rastrear livros com Título, Autor, Assunto, ID.
Definindo uma Estrutura
Use a instrução struct:
struct Books
{
public string title;
public string author;
public string subject;
public int book_id;
};
Exemplo de Uso
using System;
struct Books
{
public string title;
public string author;
public string subject;
public int book_id;
}
public class testStructure
{
public static void Main(string[] args)
{
Books Book1, Book2;
// Livro 1
Book1.title = "C Programming";
Book1.author = "Nuha Ali";
Book1.subject = "C Programming Tutorial";
Book1.book_id = 6495407;
// Livro 2
Book2.title = "Telecom Billing";
Book2.author = "Zara Ali";
Book2.subject = "Telecom Billing Tutorial";
Book2.book_id = 6495700;
// Exibe
Console.WriteLine("Book 1 title: {0}", Book1.title);
Console.WriteLine("Book 1 author: {0}", Book1.author);
Console.WriteLine("Book 1 subject: {0}", Book1.subject);
Console.WriteLine("Book 1 book_id: {0}", Book1.book_id);
Console.WriteLine("Book 2 title: {0}", Book2.title);
Console.WriteLine("Book 2 author: {0}", Book2.author);
Console.WriteLine("Book 2 subject: {0}", Book2.subject);
Console.WriteLine("Book 2 book_id: {0}", Book2.book_id);
Console.ReadKey();
}
}
Características das Structs em C#
- Podem ter métodos, campos, indexadores, propriedades, operadores e eventos.
- Podem ter construtores definidos, mas não destrutores. Não se pode definir construtor padrão (é automático).
- Diferente de classes, não herdam outras structs ou classes.
- Não podem ser base para outras structs ou classes.
- Podem implementar uma ou mais interfaces.
- Membros não podem ser
abstract,virtualouprotected. - Com operador
new, construtor apropriado é chamado. Semnew, campos ficam não atribuídos — objeto inutilizável até inicializar todos os campos.
Classe vs Struct
- Classes são tipos de referência; structs são tipos de valor.
- Structs não suportam herança.
- Structs não têm construtor padrão definível.
Exemplo Reescrito com Encapsulamento
using System;
struct Books
{
private string title;
private string author;
private string subject;
private int book_id;
public void GetValues(string t, string a, string s, int id)
{
title = t; author = a; subject = s; book_id = id;
}
public void Display()
{
Console.WriteLine("Title: {0}", title);
Console.WriteLine("Author: {0}", author);
Console.WriteLine("Subject: {0}", subject);
Console.WriteLine("Book_id: {0}", book_id);
}
}
public class testStructure
{
public static void Main(string[] args)
{
Books Book1 = new Books();
Books Book2 = new Books();
Book1.GetValues("C Programming", "Nuha Ali", "C Programming Tutorial", 6495407);
Book2.GetValues("Telecom Billing", "Zara Ali", "Telecom Billing Tutorial", 6495700);
Book1.Display();
Book2.Display();
Console.ReadKey();
}
}
Linguagem C
- Estruturas vs Classes em C++: Guia Prático para Desenvolvedores Embarcados
- Semáforos no Nucleus RTOS: Serviços Utilitários e Estruturas de Dados
- Resenha: Digitise or Die — Blueprint para Transformação Impulsionada por IoT
- Retendo a Humanidade na Era da Tecnologia Disruptiva
- Revolucionando Armazenamento de Dados: Nanoestruturas Magnéticas de Próxima Geração com Capas de Invisibilidade
- Top 17 Livros de Programação para Elevar Suas Habilidades de Código em 2021
- Estruturas de Dados em Java: Explorando Classes Core e Collections Framework
- Dominando Estruturas em C: Organize Dados Complexos Eficientemente
- Typedef em C Explicado: Simplifique Seu Código com Nomes de Tipos Personalizados
- Estruturas de Dados em C++: Construindo Programas Eficientes com Arrays, Structs e Mais