首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库C#专区C#基础

C#的结构类型

减小字体 增大字体 作者:佚名  来源:本站原创  发布时间:2010-05-08 08:52:00

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

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的数据类型之结构类型 - 翔宇亭IT乐园(http://www.biye5u.com)

本文为自己原创,请勿转载。如需转载请注明出处:翔宇亭IT乐园(http://www.biye5u.com)


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

相关文章

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3