In C#, the two main type categories are value types (such as structures), and reference types (such as classes). Because a structure (or struct) is a value type it is data-centric.

A struct can store attributes and related methods that, preferably, do not focus on behavior.

How to Declare a Struct

Each struct declaration must have the struct keyword. Precede the struct keyword with an access modifier and include a name and a pair of curly braces after it. Here’s how to declare a struct called Game:

            public struct Game {}
    

How to Populate a Struct

A struct stores data within its curly braces, in the form of attributes, constructors, methods, events, etc.

        public struct Game
{
    public string name;
    public string description;
    public int levels;
 
    public Game (string name, string description, int levels) {
        this.name = name;
        this.description = description;
        this.levels = levels;
    }
 
    public override string ToString() => $"Name: {name}, Description: {description}, Levels: {levels}";
}

The Game struct now has three attributes, a constructor, and a method. These are three primary components of a C# struct, which are also three of the primary components of a C# class.

How to Create a Struct Variable

Each instance of a C# struct is known as a variable. There are two ways to create a variable from a struct. You can use a constructor:

        Game game1 = new Game("Pokémon GO", "Lorem ipsum dolor sit amet.", 50);
    

Or you can assign values to individual attributes of a struct using the dot (.) operator:

        Game game1;
game1.name = "Pokémon GO";
game1.description = "Lorem ipsum dolor sit amet.";
game1.levels = 50;

Both approaches achieve the same result. The code above uses C# to develop a game object called Pokémon GO that has a brief description and 50 levels. So, now you can use the game1 object.

        Console.WriteLine(game1.ToString());
    

This prints the following output to the console:

        Name: Pokémon GO, Description: Lorem ipsum dolor sit amet., Levels: 50
    

The Differences Between a Struct and a Class

A struct and a class have a similar appearance, but they have many notable differences. They use different keywords for declaration. And structs support neither null references nor inheritance.