结构体

作者: Unity开发 | 来源:发表于2016-12-07 20:27 被阅读19次

    结构体定义
     * 结构体中的格式:
     * struch 结构体名
     * {
     *  结构体成员变量
     * }
     * 结构体中的特点
     * 1.结构体不能被继承
     * 2.结构体除了可以拥有结构体成员变量外换可以有属性
     * 3.结构体同类一样,也可以拥有自己的行为()
     * 4.结构体如果内部不存在任何构造函数,此时·系统会像类那样为结构体自动添加无参数的构造函数
     * 5.结构体内部如果存在构造函数,此时必须对结构体内部所有成员变量进行初始化,如果不初始化编译不通过
     * 6.如果结构体内部存在多个构造函数,不管你创建结构体是有没有调用构造函数,都必须对所有构造函数内部进行初始化结构体成员变量
     * 7.C#4.0之前系统不支持手动调用结构体无参构造函数————写都不能写。5.0支持写
     * 8.结构体中不管你是否写了带参数的构造函数结构体都会默认调用没有参数的构造函数
     * 9.结构体中不能含有析构函数
     */

    //结构体中的new不是开辟空间,既然要开辟空间,必然会有性能上的损耗,原因托管堆需要优化
    //结构体损耗性能比较小,如果你设计的数据结构是轻量级,就可以采用结构体存储
    //结构体可以指定结构体成员在内存的分布

    struct Father{
            //结构体成员变量
            public string name;  
            public string age;  
            public string sex;  
        
            public int _heigh;
            //结构体属性
            public int Height
            {


                set{ 
                    _heigh = value;
                }
                get{ 
                    return _heigh;
                }
            }
            //普通方法

            public void Say()
            {
                name="你好吗";
                age="12";
                sex = "男";
                _heigh="10.5f";
                    
                Console.WriteLine ("结构题Say方法");
            }
            //构造方法
            public Father() 
            {
                Console.WriteLine ("");
            }
            //构造方法
            public Father(string name,string age)
            {
                this.name="DDD";
                this.age="18";
                sex="男";
            }

    //析构方法
      //语法格式~加类名(结构体名)
      //析构方法没有参数,没有返回值
      //作用:销毁对象的
      //不能手动进行调用,由系统自动调用
      //在实际开发中,析构函数就是断开socket连接或断开数据库

    //  ~Father()
    //  {
    //   
    //  }

        //练习:
                //设计一个计算面积类,该类含有一个接收两个参数(长,宽)的构造方法.
                //并且含有一个普通方法可以计算长方形面积

    class Mianji
     {
      public  int chang;
      public int kuan;
      public int gao;
      public int r;

      public Mianji(int r)  
      {

       this.r = r;

      }
      public Mianji(int chang,int kuan)   
      {
       this.chang = chang;
       this.kuan = kuan;
      
      }
      public Mianji(int chang,int kuan,int gao)
      {
       this.chang = chang;
       this.kuan = kuan;
       this.gao = gao;
      
      }
      public void Sanjiao(int di,int gao)
      {
       int mj = di * gao / 2;
       Console.WriteLine ("三角形面积为:{0}",mj);
       
      }


      public void Mianj()
      {
       int mj = chang * kuan;
       Console.WriteLine ( mj);
      }
     }
     class Tixin:Mianji
     {
      public int shangdi;
      public int xiadi;
      public int gao;
      public Tixin(int shangdi,int xiadi,int gao):base(shangdi,xiadi,gao)  
      {
       this.shangdi = shangdi;
       this.xiadi = xiadi;
       this.gao = gao;

      }

      public new  void Mianj()  
      {
       int mj = (shangdi +xiadi)* gao/2;
       Console.WriteLine ( mj);
      }

     }

    ????????????????????????????????????????????

    Mianji m=new Mianji(5,6); 
                m.Mianj ();
                Mj mj=new Mj(5);
                mj.Yuan ();

    ???????????????????????????????????????

    //要求1:设计N个派生类,分别可以计算梯形面积,三角形面积,以及圆面积的方法

    Tixin t = new Tixin (4, 5, 6);
                t.Mianj ();
                Sanjiao s = new Sanjiao (4,5);
                s.Mianj ();

      //要求2:改上体为结构体,重新实现需求.

      struct Mj
        {
            public int r;
            public Mj(int r)
            {
                this.r = r;
            }
            public void Yuan()
            {
                double mianji = r * r * 3.14;
                Console.WriteLine ("圆形的面积为:{0}",mianji);
            }

        }

        struct Cfxmj{
            public int length;
            public int wide;
            public Cfxmj(int length,int wide)
            {
                this.length = length;
                this.wide = wide;
            }
            public void ChangFangxing()
            {
                int mj = length * wide;
                Console.WriteLine ("长方形形的面积为:{0}",mj);
            }

        }

        struct Tixin
        {
            public int sd;
            public int xd;
            public int gao;

            public Tixin(int sd,int xd,int gao)
            {
                this.sd = sd;
                this.xd = xd;
                this.gao = gao;
            }
            public void Tixinmj()
            {
                int mj = (sd + xd) * gao / 2;
                Console.WriteLine ("梯形的面积为:{0}",mj);
            }
        }

    Cfxmj cfx = new Cfxmj (4,6);
                cfx.ChangFangxing ();
                Tixin tx = new Tixin (4, 5, 3);
                tx.Tixinmj();

    定义一个枚举类型PrimitiveType
        enum PrimitiveType{
            Cube,
            Sphere,
            Capsule,
            Cylinder,
            Plane,
            Quad
        }
    (包括:正方体 cube,球体 sphere,胶囊体 capsule,圆柱体cylinder,平面plane,四边形quad)
      用来存在常用的游戏物体。定义一个枚举变量并赋值,输出其默认的整型值。

        PrimitiveType p=PrimitiveType.Cylinder;
                int i =Convert.ToInt16 (p);
                Console.WriteLine (p);

    相关文章

      网友评论

        本文标题:结构体

        本文链接:https://www.haomeiwen.com/subject/lnhjmttx.html