首页 > 编程 > C# > 正文

C#的结构类型

2023-05-09 18:58:26
字体:
来源:转载
供稿:网友

有时我们可能对同一事物使用多个不同的变量来描述,如果将其分开来,显得不够灵活。结构类型很好的解决了这个问题,它把多个不同的变量组织在一起。其定义方法如下:

struct  结构名称
       {
             成员声明列表;
       }

成员可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等。每个成员在声明的时候都采用如下的格式:

访问修饰符   类型   名称;

假设我们想描述一个点的位置和颜色,可以将其定义为结构类型的,方法如下:

struct point
        {
               double x;           //表示点的横坐标
               double y;           //代表点的纵坐标
               string color;
         }

定义之后,我们就可以像使用其它数据类型那样来定义变量,如
                    point p1,p2;

即定义了两个point类型的变量p1和p2。在使用里面的成员时,可以通过.操作符来实现。如:
                    p1.x=23.4;p1.y=32;p2.color="绿色";

可能,大家感觉这种类型跟类类型相似,的确如此,但其也有着很大区别:

(1)结构是值类型,类是引用类型;

(2)结构中的成员如果没有指定访问修饰符,默认是public,而类是private;

(3)结构不能包含显式的无参数构造函数,结构成员自动初始化为它们的默认值,而类可以包含这样的无参构造函数;

(4)对于结构中的实例字段成员,不能在声明时赋值初始化;

(5)结构不支持继承,但是,结构可以从基类object继承。结构也可以实现接口。类支持继承,也可以实现接口。

结构是值类型,在为结构分配内存时,速度非常快。结构在析构时,速度也很快。另外,结构赋给另一个结构时(例如A=B,其中A和B是结构),结构的所有内容就被复制,而对于类,则只复制引用。结构的这一行为,就会有性能损失,根据结构的大小,性能损失也不同。

结构主要用于小的数据结构。但当把结构作为参数传递给方法时,最好作为ref参数传递,以避免性能损失。

下面给出关于结构体一个完整的例子:

using System;

namespace  StructType
       {
           class Class1
           {
                struct student
                {
                   public int sno;
                   public char sex;
                   public int age;
                 }
             static void Main(string[] args)
              {
                   student s;
                   s.sno=100;
                   s.sex='男';
                   s.age=23;
                   Console.WriteLine("学号为{0}的学生性别为{1};年龄为{2}",s.sno,s.sex,s.age);
                }
          }
    }

运行效果如下图所示: 

C的数据类型之结构类型 - 武林网VEVB(http://www.VeVb.com)

上一篇:C#程序中的变量

下一篇:C#中的常量

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表