结构体

作者: 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);

相关文章

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

  • C语言 第九章 结构体

    [TOC] 第九章结构体 结构体的定义 结构体定义2 指针表示结构体

网友评论

    本文标题:结构体

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