C# 结构(Struct)

  在 C# 中,结构是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构。

  结构是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本书的以下属性:

  Title

  Author

  Subject

  Book ID

  定义结构

  为了定义一个结构,您必须使用 struct 语句。struct 语句为程序定义了一个带有多个成员的新的数据类型。

  例如,您可以按照如下的方式声明 Book 结构:

  struct Books

  {

  public string title;

  public string author;

  public string subject;

  public int book_id;

  };

  下面的程序演示了结构的用法:

  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();

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  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

  C# 结构的特点

  您已经用了一个简单的名为 Books 的结构。在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有一下特点:

  结构可带有方法、字段、索引、属性、运算符方法和事件。

  结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义默认的构造函数。默认的构造函数是自动定义的,且不能被改变。

  与类不同,结构不能继承其他的结构或类。

  结构不能作为其他结构或类的基础结构。

  结构可实现一个或多个接口。

  结构成员不能指定为 abstract、virtual 或 protected。

  当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。

  如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

  类 vs 结构

  类和结构有以下几个基本的不同点:

  类是引用类型,结构是值类型。

  结构不支持继承。

  结构不能声明默认的构造函数。

  针对上述讨论,让我们重写前面的实例:

  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();

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  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

  本文转载自:w3cschool(编辑:雷林鹏 来源:网络)

雷林鹏分享:C# 结构(Struct)的更多相关文章

  1. 雷林鹏分享:C# 程序结构

    C# 程序结构 在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考. C# Hello World 实例 一个 C# 程序主要包括以下部分: ...

  2. 雷林鹏分享:jQuery EasyUI 树形菜单 - 使用标记创建树形菜单

    jQuery EasyUI 树形菜单 - 使用标记创建树形菜单 一个树形菜单(Tree)可以从标记创建.easyui 树形菜单(Tree)也可以定义在 元素中.无序列表的 元素提供一个基础的树(Tre ...

  3. 雷林鹏分享:jQuery EasyUI 表单 - 创建树形下拉框

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  4. 雷林鹏分享:XML 简介

    XML 简介 XML 被设计用来传输和存储数据. HTML 被设计用来显示数据. 应该掌握的基础知识 在您继续学习之前,需要对以下知识有基本的了解: HTML JavaScript 如果您希望首先学习 ...

  5. 雷林鹏分享:XML 验证

    XML 验证 拥有正确语法的 XML 被称为"形式良好"的 XML. 通过 DTD 验证的XML是"合法"的 XML. 形式良好的 XML 文档 "形 ...

  6. 雷林鹏分享:查看 XML 文件

    查看 XML 文件 在所有主流的浏览器中,均能够查看原始的 XML 文件. 不要指望 XML 文件会直接显示为 HTML 页面. 查看 XML 文件 - Tove Jani Reminder Don' ...

  7. 雷林鹏分享:XML 编辑器

    XML 编辑器 如果您希望极认真地学习和使用 XML,那么您一定会从一款专业的 XML 编辑器的使用上受益. XML 是基于文本的 XML 是基于文本的标记语言. 关于 XML 的一件很重要的事情是, ...

  8. 雷林鹏分享:XML 总结 下一步学习什么呢?

    XML 总结 下一步学习什么呢? XML 总结 XML 可用于交换.共享和存储数据. XML 文档形成 树状结构,在"根"和"叶子"的分支机构开始的. XML ...

  9. 雷林鹏分享: C# 简介

    C# 简介 C# 是一个现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的. C# 是由 Anders Hejlsberg 和他的团队在 ...

随机推荐

  1. Wxpython零基础制作计算器

    本文关于Wxpython零基础利用python3.6在pycharm下制作计算器,文章末尾有免费源代码供下载 以后同步更新到博客园和这个网站,www.empirefree.top, 这个网站备案号没有 ...

  2. hdu 1394 Minimum Inversion Number - 树状数组

    The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...

  3. linux远程方式,以及基础命令

    最近准备学习linux系统,购买了阿里巴巴的云服务器,系统为CentOS. 一.连接实例 1.使用管理终端. 这是阿里巴巴云服务器管理控制台,需要登录阿里巴巴,找到自己实例后,点击右侧远程连接即刻. ...

  4. 打造性感好用的 VS Code 编辑器

    官网: https://code.visualstudio.com/ Blog链接:打造性感好用的VS Code编辑器 主命令框 F1或Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以 ...

  5. 大臣的旅费|2013年蓝桥杯A组题解析第十题-fishers

    标题:大臣的旅费 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市 ...

  6. Ubuntu yindaoxiufu 引导修复(Boot Repair)

    Ubuntu yindaoxiufu 引导修复(Boot Repair)   from: http://blog.csdn.net/piaocoder/article/details/50589667 ...

  7. Git 提交的正确姿势:Commit message 编写指南

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html Git 每次提交代码,都要写 Commit message( ...

  8. HDU 2426 Interesting Housing Problem(二分图最佳匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2426 题意:每n个学生和m个房间,现在要为每个学生安排一个房间居住,每个学生对于一些房间有一些满意度,如果满意度 ...

  9. Ural 1297 Palindrome(后缀数组+最长回文子串)

    https://vjudge.net/problem/URAL-1297 题意: 求最长回文子串. 思路: 先将整个字符串反过来写在原字符串后面,中间需要用特殊字符隔开,那么只需要某两个后缀的最长公共 ...

  10. ASP.NET开发总结

    ASP.NET的界面可以是.aspx,会对应有一个.aspx.cs的逻辑处理文件,.aspx的所有控件对应着变量,变量名就是控件的ID. 为了代码编写方便起见,一般将数据库表的新增字段,放在最后. 日 ...