Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

Structure (Struct)


May 11, 2021 C#


Table of contents


The structure (Struct).

In C#, the structure is the value type data structure. I t allows a single variable to store relevant data for various data types. The struct keyword is used to create the structure.

Structures are used to represent a record. S uppose you want to keep track of the dynamics of books in the library. You may want to track the following properties for each book:

  • Title
  • Author
  • Subject
  • Book ID

Define the structure

In order to define a structure, you must use a struct statement. The struct statement defines a new data type for the program with multiple members.

For example, you can declare a Book structure as follows:

struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  

The following program demonstrates the use of structures:

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;        /* 声明 Book1,类型为 Book */
      Books Book2;        /* 声明 Book2,类型为 Book */

      /* book 1 详述 */
      Book1.title = "C Programming";
      Book1.author = "Nuha Ali"; 
      Book1.subject = "C Programming Tutorial";
      Book1.book_id = 6495407;

      /* book 2 详述 */
      Book2.title = "Telecom Billing";
      Book2.author = "Zara Ali";
      Book2.subject =  "Telecom Billing Tutorial";
      Book2.book_id = 6495700;

      /* 打印 Book1 信息 */
      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);

      /* 打印 Book2 信息 */
      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();

   }
}

When the above code is compiled and executed, it produces the following results:

Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700

The characteristics of the structure of C

You've used a simple structure called Books. T he structure in C# is different from the structure in traditional C or C. The structure in C# has the following characteristics:

  • Structures can come with methods, fields, indexes, properties, operator methods, and events.
  • Structures define constructors, but not destructors. H owever, you cannot define the default constructor for the structure. The default constructor is automatically defined and cannot be changed.
  • Unlike classes, structures cannot inherit other structures or classes.
  • Structures cannot be used as infrastructure for other structures or classes.
  • Structures can implement one or more interfaces.
  • Structure members cannot be specified as abstract, virtual, or protected.
  • When you create a structure object using the New operator, the appropriate constructor is called to create the structure. Unlike classes, structures can be instantiated without using the New operator.
  • If you do not use the New operator, the field is assigned and the object is used only after all fields have been initialized.

Class vs structure

Classes and structures have several basic differences:

  • Classes are reference types, and structures are value types.
  • The structure does not support inheritance.
  • The structure cannot declare the default constructor.

For the above discussion, let's rewrite the previous example:

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(); /* 声明 Book1,类型为 Book */
      Books Book2 = new Books(); /* 声明 Book2,类型为 Book */

      /* book 1 详述 */
      Book1.getValues("C Programming",
      "Nuha Ali", "C Programming Tutorial",6495407);

      /* book 2 详述 */
      Book2.getValues("Telecom Billing",
      "Zara Ali", "Telecom Billing Tutorial", 6495700);

      /* 打印 Book1 信息 */
      Book1.display();

      /* 打印 Book2 信息 */
      Book2.display(); 

      Console.ReadKey();

   }
}

When the above code is compiled and executed, it produces the following results:

Title : C Programming
Author : Nuha Ali
Subject : C Programming Tutorial
Book_id : 6495407
Title : Telecom Billing
Author : Zara Ali
Subject : Telecom Billing Tutorial
Book_id : 6495700