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. c++ vector常见用法

    //输出尾巴的元素 cout<<vec.back(); //定义vector迭代器 vector<int>::iterator ite=vec.begin(); for(ite ...

  2. 又是DataSnap的问题

    最近在调试DataSnap的程序,突然发现TClientDataSet打不开了,报错为dsnap200.bpl的非法地址访问,如下图: 很是怪异,干脆新建工程,只有TSQLConnection.TSQ ...

  3. linux下如何删除行首的数字?

    举例如下: 1.某文件jello.txt中有以下行 1111-yes 2222-no 3333-yes-no-no 2.删除jello.txt中每行行首的数字 cat jello.txt | cut ...

  4. tp框架中的一些疑点知识-5

    关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...

  5. 为linux dns (bind named)服务器配置 单独的笔记

    注意: 当在把 named.ca文件下载好13个根dns服务器的 全球记录后, 就不再需要别的 dns服务器来辅助获得了. 只要把所有 本地服务器 不能解析的请求, 都发送到 . 点根去就行了, 所以 ...

  6. Unity3D学习笔记(三十六):Shader着色器(3)- 光照

    光照模型:用数学的方法模拟现实世界中的光照效果.   场景中模型身上的光反射到相机中的光线: 1.漫反射:产生明暗效果 2.高光反射:产生镜面反射,物体中有最亮且比较耀眼的一部分 3.自发光: 4.环 ...

  7. [分享]Active-HDL 9.2 安装

    Download 点击下载Active-HDL 9.2 How to Install ? 解压后依次进行以下操作 1.运行Active_HDL_9.2sp1_main_setup.exe,允许程序所有 ...

  8. Markdown 指南

    Markdown 是一种轻量级的「标记语言」,使用用特殊的 Markdown 文档处理器将 Markdown 语法翻译成预设的文档格式.标题大小等,一般用于展示时输出的是 HTML.这个教程可以让使用 ...

  9. Gym 101617J Treasure Map(bfs暴力)

    http://codeforces.com/gym/101617/attachments 题意:给出一个图,每个顶点代表一个金矿,每个金矿有g和d两个值,g代表金矿初始的金子量,d是该金矿每天的金子量 ...

  10. wow.js

    一.首先说明一下怎么使用这个插件: 1.wow.js依赖于animate.css,首先在头部引用animate.css或者animate.min.css. <link rel="sty ...