C# 结构体

一、 结构体是一种数据类型,和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 )
}

八、自定义构造方法

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

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



九、结构体嵌套

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

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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值