无涯教程-C# - Struct结构

49 阅读2分钟

在C#中,结构是值类型的数据类型,它帮助您使单个变量保存各种数据类型,struct关键字用于创建结构。

定义结构

若要定义结构,必须使用struct语句。例如,下面是您可以声明Book Structure-的方法

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

以下程序显示了Structure结构的用法

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 */

  </span><span class="com">/* book 1 specification */</span><span class="pln">
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">title </span><span class="pun">=</span><span class="pln"> </span><span class="str">"C Programming"</span><span class="pun">;</span><span class="pln">
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">author </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Nuha Ali"</span><span class="pun">;</span><span class="pln"> 
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">subject </span><span class="pun">=</span><span class="pln"> </span><span class="str">"C Programming Tutorial"</span><span class="pun">;</span><span class="pln">
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">book_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6495407</span><span class="pun">;</span><span class="pln">

  </span><span class="com">/* book 2 specification */</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">title </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Telecom Billing"</span><span class="pun">;</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">author </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Zara Ali"</span><span class="pun">;</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">subject </span><span class="pun">=</span><span class="pln">  </span><span class="str">"Telecom Billing Tutorial"</span><span class="pun">;</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">book_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6495700</span><span class="pun">;</span><span class="pln">

  </span><span class="com">/* print Book1 info */</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 1 title : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 1 author : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">author</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 1 subject : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 1 book_id :{0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">book_id</span><span class="pun">);</span><span class="pln">

  </span><span class="com">/* print Book2 info */</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 2 title : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 2 author : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">author</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 2 subject : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Book 2 book_id : {0}"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">book_id</span><span class="pun">);</span><span class="pln">       

  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">();</span><span class="pln">

} }

编译并执行上述代码时,将生成以下结果-

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

类与结构

类和结构具有以下基本区别-

  • 类是引用类型,结构是值类型
  • 结构不支持继承
  • 结构不能具有默认构造函数

根据上面的讨论,让无涯教程重写前面的示例-

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 */

  </span><span class="com">/* book 1 specification */</span><span class="pln">
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">getValues</span><span class="pun">(</span><span class="str">"C Programming"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"Nuha Ali"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"C Programming Tutorial"</span><span class="pun">,</span><span class="lit">6495407</span><span class="pun">);</span><span class="pln">

  </span><span class="com">/* book 2 specification */</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">getValues</span><span class="pun">(</span><span class="str">"Telecom Billing"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"Zara Ali"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Telecom Billing Tutorial"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6495700</span><span class="pun">);</span><span class="pln">

  </span><span class="com">/* print Book1 info */</span><span class="pln">
  </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">display</span><span class="pun">();</span><span class="pln">

  </span><span class="com">/* print Book2 info */</span><span class="pln">
  </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">display</span><span class="pun">();</span><span class="pln"> 

  </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">ReadKey</span><span class="pun">();</span><span class="pln">

} }

编译并执行上述代码时,将生成以下结果-

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

参考链接

www.learnfk.com/csharp/csha…