雷林鹏分享:C# 结构(Struct)

  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(编辑:雷林鹏 来源:网络)

原文地址:https://www.cnblogs.com/pengpeng1208/p/10437253.html

时间: 2024-07-31 19:45:49

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

雷林鹏分享:Ruby 异常

Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,所以要采取适当的行动,而不至于让程序完全停止. Ruby 提供了一个完美的处理异常的机制.我们可以在 begin/end 块中附上可能抛出异常的代码,并使用 rescue 子句告诉 Ruby 完美要处理的异常类型. 语法 begin # - rescue OneTypeOfExce

雷林鹏分享:查看 XML 文件

查看 XML 文件 在所有主流的浏览器中,均能够查看原始的 XML 文件. 不要指望 XML 文件会直接显示为 HTML 页面. 查看 XML 文件 - Tove Jani Reminder Don't forget me this weekend! 查看这个 XML 文件:note.xml XML 文档将显示为代码颜色化的根以及子元素.通过点击元素左侧的加号(+)或减号( - ),可以展开或收起元素的结构.要查看原始的 XML 源(不包括 + 和 - 符号),选择"查看页面源代码"或

雷林鹏分享:XML 验证

XML 验证 拥有正确语法的 XML 被称为"形式良好"的 XML. 通过 DTD 验证的XML是"合法"的 XML. 形式良好的 XML 文档 "形式良好"的 XML 文档拥有正确的语法. 在前面的章节描述的语法规则: XML 文档必须有一个根元素 XML元素都必须有一个关闭标签 XML 标签对大小写敏感 XML 元素必须被正确的嵌套 XML 属性值必须加引号 Tove Jani Reminder Don't forget me this we

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

jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务器. 在本教程中,我们将要创建一个注册表单,带有 name.address.city 字段.city 字段是一个树形下拉框(ComboTree)字段,在里面用户可以下拉树面板(tree panel),并选择一个特定的城市. 创建表单(Form) title="Register" butto

雷林鹏分享:MySQL 复制表

MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下: 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等. 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构. 如果你想复制表的内容,你就

雷林鹏分享:MySQL ALTER命令

当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. [email protected]# mysql -u root -p password; Enter password:******* mysql> use CODERCTO; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c

雷林鹏分享:MySQL 索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索引包含多个列. 创建索引时,你需要确保该索引是应用在SQL 查询语句的条件(一般作为 WHERE 子句的条件). 实际上,索引也是一张表,该表保存了主键与索引字

雷林鹏分享:Lua 迭代器

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素. 泛型 for 迭代器 泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数.状态常量.控制变量. 泛型 for 迭代器提供了集合的 key/value 对,语法格式如下: for k, v in pairs(t) do print(k, v) end 上面代码中,k, v为变量列表;pai

雷林鹏分享:Lua 模块与包

模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度. Lua 的模块是由变量.函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量.函数放入其中,最后返回这个 table 就行.以下为创建自定义模块 module.lua,文件代码格式如下: -- 文件名为 module.lua -- 定义一个名为 modul