写点什么

C#入门系列 (十三) -- 初识结构体

作者:陈言必行
  • 2022 年 6 月 13 日
  • 本文字数:1007 字

    阅读完需:约 3 分钟

概念

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


对于这些比较复杂的数据的表示,C#提供了结构体类型来保证数据的描述尽量与实际应用相一致。


C#的结构体类型(或称为结构)是用户自定义类型的一种,它为用户将实际应用中数据类型不同,但互相联系的数据看作一个整体提供了类型支持。


C#的结构体允许将不同类型但又互相联系的数据组合在一起形成一种新的数据类型。

定义

定义形式为:


[public] struct 结构体类型名{    成员声明;
复制代码


  • 成员声明描述了该类型的数据成员(或称为数据元素)以及其他类型成员的集合。

  • 成员的数目可以任意多个,由具体需求确定。

  • 大括号是成员列表的边界符。


结构体类型定义时,必须给出各个数据成员的类型声明。


如下所示:


public 成员类型 成员名称列表;
复制代码


public 是一个访问权限修饰符,表示该数据成员允许在结构体类型定义之外的地方访问。


如果在定义结构体时,某个数据成员之前没有 public 访问修饰符,则结构体类型变量不能访问这个数据成员。


如果声明的多个成员是同一类型,则形成成员列表,各成员名称之间用逗号隔开。


  • 例如,对于坐标点信息的表示可以建立下面的结构体类型。


struct Ponit{  public int X; //横坐标  public int Y; //纵坐标
复制代码


结构体属于值类型的数据类型,可以根据其使用范围选择定义在某个类的内部或者定义在所有类的外部。


一般来说,放在类内部定义的结构体类型只在该类中使用,放在类外部定义的结构体可以在当前命名空间范围内使用。


C#中,结构体定义不能放在方法或函数内部。

补充说明

下面是对结构体类型定义的补充说明。


  1. struct 是定义结构体类型的一个关键字,不代表一种数据类型。

  2. 只有使用 struct 关键字定义了具体的结构体类型之后才能定义相应的变量,因此不能使用 struct 关键字来作为变量的数据类型。

  3. 结构体类型的成员既可以是简单数据类型的,也可以是结构体类型的,即结构体的定义可以嵌套。比如:


struct Ponit{  public int X; //横坐标  public int Y; //纵坐标
struct Ponit_3{ public Ponit Pos_X_Y; public int Z;
复制代码


  1. C#不允许结构体内部的成员类型是本结构体。如:


struct Ponit{  public int X; //横坐标  public int Y; //纵坐标  // 这样是错误 ❎ 的  public Ponit pos; 
复制代码


  1. C#中的结构体除了数据成员之外,它也可以有函数成员。

  2. 结构体与类最大的区别就是类是引用类型,而结构是值类型。结构是密封的、不能继承的。

发布于: 刚刚阅读数: 3
用户头像

陈言必行

关注

公号:开发同学留步 2019.03.12 加入

我是一个从事Unity游戏开发攻城狮,6年开发经验,助你日常不加班。

评论

发布
暂无评论
C#入门系列(十三) -- 初识结构体_C#_陈言必行_InfoQ写作社区