C# 结构体

    xiaoxiao2021-03-25  113

    一、 结构体是一种数据类型,和int, double一样,都可以用来定义变量

    二、 结构体是一种自定义数据类型,所以想使用就必须先定义

    三、 结构体可以存放多种类型的变量,这些变量组合在一起,形成一个有意义的元素

    四、 结构体的定义:

    struct  结构体{

    访问修饰符 数据类型 成员名1;

    访问修饰符 数据类型 成员名2;

    ……

    }

    // 定义一个学生结构体,包含成员:姓名,年龄,性别,学号 struct Student{ public string name; public char gender; public int age; public int number; }

    手动添加自定义构造方法的结构:

    public 结构体名 (参考列表){ 赋值语句;}

    public Student (string a, char b, int c, int d){ // 为各个成员赋值 name = a; gender = b; age = c; number = d; }

    五、注意

    1.定义结构体时,只能声明变量,不能赋值

    2.成员之间以分号分隔

    六、结构体变量

    1.由结构体类型修饰的变量

    2.定义格式: 结构体类型  变量名

    3.访问结构体成员: 变量名 成员名

    // 定义一个结构体 变量 Student stu; // 静态初始化,必须先给成员赋值,才能使用 stu.name = “老王”; stu.gender = ‘m’; stu.age = 18; su.number = 10086; Console.WriteLine ( stu.name + “ “ + stu.number ); // 动态初始化,使用new关键字,调用构造方法开辟空间,会为成员赋默认值 Student stu = new Student ( ); stu1.age = 10; Console.WriteLine ( stu1.age + “ “ + stu1.name + “ ” + stu1.gender + “ “ + stu1.number); 七、结构体变量赋值

    1.单一赋值

    stu1.name = "老宋"2.整体赋值  注意:原结构体变量的成员必须全部赋值

    Student stu2 = stu; Console.WriteLine(stu2.name); // 练习 定义一个老师结构体,包含成员:姓名、年龄、身高,定义一个变量,赋值并输出全部信息 Struct Teacher { // 手动构造 public string name; public int age; public double height; // 自定义构造 public Teacher (string a, int b, double c){ name = a; age = b; height = c; } } Teacher[ ] tea ; tea.name = “王”; tea.age = 18; tea.height = 180.5; Console.WriteLine (tea.name + “ “ + tea.age + “ ” + tea.height ); // 整形数组 int[ ] arr = new int[5] Teacher[ ] teas = new Teacher[ 5] string[ ] names = { “张三” ,“李四”,“王五”, “赵大”, “钱二”} Random ageR = new Random ( ); Random heightR = new Random ( ); // 为数组元素赋值 for ( int j = 0;j < teas. Length ; j ++){ teas[ j ] .name = name [ j ] ; teas[ j ] .age = ageR.Next(20,40) teas[ j ].height = heightR. Next ( 160,190) ; } // 输出所有老师的信息 for( int i = 0;i < teas. Length ; i++){ Console. WriteLine ( “name:{0},age:{1},height{2”, teas[ i ].name, teas[ i ].age, teas[ i ].height ); } // 找出年龄最大的老师,并输出它的所有信息 Teacher temp = new Teacher(); for ( int i = 0;i < teas.Length - 1; i++){ temp = temp.age > teas[ i ].age ? temp : teas[ i ] ; } Console. WriteLine (“年龄最大者的信息为:{0},{1},{2}”,temp.name ,temp. age , temp.height) // 将所有老师按身高升序排列 for( int i = 0;i < teas.Length - 1; i++){ for( int j = 0; j < teas.Length - 1 - i; j++){ if(teas[ j ].height > teas[ j + 1 ].height){ Teacher temp1 = teas[ j ]; teas [ j ] = teas [ j + 1]; teas [ j + 1] = temp1; } } } Console.WriteLine ( “\n 按身高升序排列后”); for ( int i = 0; i < teas.Length ; i++){ Console.WriteLine( “name:{0},age{1},height{2}”,teas[ i ].name , teas [ i ] .age, teas[ i ].height ); } // 将所有老师按年龄升序排列 for ( int i = 0;i < teas.Length - 1; i++ ){ for ( int j = 0 ;j <teas. Length - 1 - i; j++ ){ if ( teas[ j ].age > teas [ j + 1] ){ Teacher temp2 = teas[ j ]; teas [ j ] = teas[ j + 1]; teas[ j ] = temp2; } } } Console.WriteLine( “\n按年龄升序排列后”); for ( int = i ; i < teas.Length ; i++){ Console.WriteLine( “name:{0}, age{1}, height{2}” , teas[ i ]. name , teas[ i ] .age , teas[ i ].height ) } 八、自定义构造方法

    目的:简化代码,方便赋值

    注意:必须为全部的成员赋值

    九、结构体嵌套

    一个结构体的成员,可以是另一种结构体的类型

    (一个结构体类型的变量,可以作为另外一个结构体的成员)

    转载请注明原文地址: https://ju.6miu.com/read-21809.html

    最新回复(0)