【C#】Struct 结构体

Struct 结构体

**含义:**结构体是变量和函数的数据集合。

声明:

  1. 结构体关键词是struct,名称用帕斯卡命名法书写;

  2. 结构体写在namespace语句块中;

  3. 访问修饰符public和private用来修饰变量和函数,public可以外部调用,private是私有的,只能在内部使用。

结构体内容:

  1. 变量

    1.1 声明变量时不能初始化;只能在外部和函数中赋值;

    1.2 变量默认访问修饰符是private类型,需要使用public,这样才能在结构体外部进行访问使用;

    1.3 变量类型可以写任何类型,包括结构体,不过不能是自己的结构体。

  2. 构造函数(可不写)

    2.1 构造函数无返回值;

    2.2 构造函数名与结构体名一样;可以重载;

    2.3 构造函数有参数,是结构体参数;

    2.4 构造函数内必须对参数进行赋值;用this关键词来区分构造函数的内部参数与传入的外部参数;

    2.5 构造函数主要用来快速初始化结构体对象的。

  3. 函数

    3.1 函数用来执行具体的语句;表现这个数据结构的行为;

    3.2 可以根据需求写无数个函数;

    3.3 函数体中可以直接使用结构体内部声明的变量。

结构体使用:

  1. 先声明一个结构体变量;例如:StructName = hhh;//StructName = StructVariableName;
  2. 使用结构体变量名加.来调用结构体中的变量和函数;例如:hhh.name = “124”;//StructVariableName.VariableName = value;
  3. 通过结构体与其构造函数可以快速创建一个结构体变量;例如:Student s = new Student(“ahfha”,13,true,123);

练习题:

 namespace 结构体
{
    //练习题一
    //使用结构体描述矩形的信息:长、宽;
    //创建一个矩形,对其长宽进行初始化,并打印矩形的长、宽、面积、周长等信息。
    struct Rectangle
    {
        public int length;
        public int width;

        public Rectangle(int length, int width)
        {
            this.length = length;
            this.width = width;
        }
        public void Func() 
        {
            int area = length*width;
            int perimeter = 2*length+2* width;
            Console.WriteLine("输入的矩形的长为:{0},宽为:{1},面积为:{2},周长为:{3}",length,width,area,perimeter);
        }

    }

    //练习题二
    //使用结构体描述玩家信息,玩家名字,玩家职业
    //请用户输入玩家姓名,选择玩家职业,最后打印玩家的攻击信息
    //职业:
    //战士(技能:冲锋)
    //猎人(技能:假死)
    //法师(技能:奥术冲击)
    //打印结果:猎人杰瑞释放了假死

    struct Player
    {
        public string name;
        public string profession;

        public Player(string name,string profession)
        {
            this.name = name;
            this.profession = profession;
        }

        public void AttackInfo()
        {
            string skill = "";
            switch (profession)
            {
                case "战士":
                    skill = "冲锋";
                    break;
                case "猎人":
                    skill = "假死";
                    break;
                case "法师":
                    skill = "奥术冲击";
                    break;
            }
            Console.WriteLine("{0}{1}释放了{2}", profession, name, skill);
        }   
    }

    //练习题三
    //使用结构体描述小怪兽
    //定义一个数组存储10个上面描述的小怪兽,每个小怪兽的名字为(小怪兽+数组下标)
    //举例:小怪兽0,最后打印出10个小怪兽的名字+攻击力数值

    struct LittleMonster 
    { 
        public void Func1()
        {
            string[] monsterName = new string[10];
            int[] monsterAbility = new int[10];

            for (int i = 0; i < 10; i++) 
            {
                monsterName[i] = "小怪兽" + i;
                monsterAbility[i] = 100*i+100;
                Console.WriteLine("{0}攻击力{1}", monsterName[i], monsterAbility[i]);
            }
        }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            //练习题一
            Rectangle rectangle = new Rectangle(30,40);
            rectangle.Func();

            //练习题二
            Player playerInfo = new Player("杰瑞","法师");
            playerInfo.AttackInfo();

            //练习题三
            LittleMonster littleMonster;
            littleMonster.Func1();
        }
    }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值