当前位置:嗨网首页>书籍在线阅读

14-结构的定义和使用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.4.1 结构的定义和使用

在C#中,可以将结构看成轻量级的类。定义结构和定义类相似,采用struct进行定义,每个struct类型数据可以是常量、变量、构造函数、方法和属性等成员。

定义结构的语法如下。

<访问修饰符> struct 结构名
{
            //结构体定义
}

使用结构通过声明结构体变量或使用new来实例化结构对象,然后通过“结构体变量.结构成员名”或“结构对象.结构成员”的方式来使用结构。

【范例9-5】 定义表示学生信息的结构Student并使用。

(1)在Visual Studio 2013中新建C#控制台程序,项目名称为“StructDemo”,在自动生成的Program类的后面定义Student结构,注意Student结构和Program类二者是并列的,不能嵌套。输入如下代码(代码9-5-1.txt)。

01  struct Student                            //定义结构Student
02  {                                         //结构的成员变量
03          public String stuNum;             //定义结构成员表示学生学号
04          public String stuName;            //定义结构成员表示学生姓名
05          public int stuAge;                //定义结构成员表示学生年龄
06          public int stuClass;              //定义结构成员表示学生班级
07          public int stuGrade;              //定义结构成员表示学生年级        
08          public Student(string stuNum, string stuName, int stuAge, int stuClass,int stuGrade)
09          {                                 //结构的构造函数,用参数给结构中的成员赋值
10                  this.stuNum = stuNum;     //将参数stuNum赋给this.stuNum
11                  this.stuName = stuName;   //将参数stuName赋给this.stuName 
12                  this.stuAge = stuAge;     //将参数stuAge赋给this.stuAge 
13                  this.stuClass = stuClass; //将参数stuClass赋给this.stuClass 
14                  this.stuGrade = stuGrade; //将参数stuGrade赋给this.stuGrade 
15          }
16          public void DoHomework()          //结构中的方法
17          }
18                                            //结构中的方法
19          }
20  }
**注意** 结构中只能定义有参数的构造函数,对数据字段不能赋初值,否则会出错。

(2)在Program.cs的Main方法中输入以下代码以测试类的成员(拓展代码9-5-2.txt)。

01  Student goodStu;                                  //创建结构goodStu表示好学生
02  goodStu.stuNum="20050901012";                     //给结构中的成员stuNum赋值
03  goodStu.stuName = "Anderson";                     //给结构中的成员StuName赋值
04  goodStu.stuAge  = 19;                             //给结构中的成员stuAge赋值
05  goodStu.stuClass  = 1;                            //给结构中的成员StuClass赋值
06  goodStu.stuGrade = 1;                             //给结构中的成员stuGrade赋值
07  Console.WriteLine("结构演示:");
08  Console.WriteLine("三好学生:学号-{0},姓名-{1},年龄-{2},班级-{3}", goodStu.stuNum, goodStu.
    stuName , goodStu.stuAge , goodStu.stuClass);     //输出结构中成员的值
09  goodStu.DoHomework();                             //调用结构的方法
10  Student normalStu = new Student("20050901018", "Bliss", 18, 1, 1);
    //使用new来实例化结构对象方式创建结构
11  Console.WriteLine("普通学生:学号-{0},姓名-{1},年龄-{2},班级-{3}", normalStu.stuNum,
    normalStu.stuName , normalStu.stuAge , normalStu.stuClass);
12  goodStu.DoHomework();        //调用结构的方法

【运行结果】

单击工具栏中的 按钮,即可在控制台中输出如下图所示的结果。

161.png 【范例分析】

在这个实例中声明了结构Student,它有5个变量成员,一个有参数的构造函数和一个DoHomework方法。在上面给出的Main方法中,代码第1行和第10行分别代表两种创建结构对象变量的方法。

【拓展训练】

把【范例9-5】中的结构体Student改为类,以实现同样的功能(拓展代码9-5-3.txt)。

改为类后,要添加一个无参数构造函数,goodStu的创建改为使用new。

Student  goodStu = new Student() ;            //创建对象

运行结果和原来的一样。