在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