结构体 - struct

 
  结构体定义:
  结构体的语法格式:

  struct 结构体名
  {
   结构体成员变量(就相当于类中的成员)
  }

  

  结构体的特点
  1.结构体不能被继承
  2.结构体除了可以拥有结构体成员变量外,同样可以有属性(字段定义后不能赋值)
  3.结构体和类一样,也可以拥有自己的行为(函数/方法)
  4.结构体如果内部不存在任何构造函数,此时系统会像类那样为结构自动添加无参数的构造函数
  5.结构体内部如果存在构造函数,此时必须对结构体内部所有成员进行初始化,如果不初始化,编译不会通过
  6.如果结构体内部存在多个构造函数,不管你创建的结构体变量的时候有没有调用构造函数,都必须对所有构造体函数内部进行初始化结构体成员变量
  7.C#4.0之前包含4.0,系统不支持手动调用结构体无参数的构造函数(写都不能写)完全由系统默认提供
   C#5.0支持手动写默认的构造函数
  8.结构体中不管你是否写了带有参数的构造函数,系统任然会为结构体提供一个无参数的构造函数

  9.结构体中不能含有析构函数

 10.结构类型的对象可以不实例化

结构和类的区别:

结构中的字段不允许赋初始值;
结构中不允许定义无参构造函数;
带参的构造方法里必须给所有字段赋值;
结构不需要实例化对象就可以调用。


using System;

namespace 结构体 {


	struct Father{
		// 结构体成员变量
		public string name;
		public string age;
		public string sex;

		private float _height;

		public float Height{
			set{ 
				_height = value;
			}
			get{ 
				return _height;
			}
		}

		// 普通方法
		public void Say(){
			Console.WriteLine ("结构体中的Say方法");
			
		}
		// 构造方法
//		public Father() {
//			name = "你好吗";
//			age = "18";
//			sex = "男";
//			_height = 1.86f;
//			Console.WriteLine ("调用结构体的无参数构造方法!~");
//		}

		public Father(string name,string age){
			this.name = name;
			this.age = age;
			sex = "男";
			_height = 1.86f;
		}
		// 析构方法
	 // 语法格式~+类名(结构体名)
	 // 析构方法没有返回值,没有返回值
	 // 作用:销毁对象的
	 // 不能手动进行调用,由系统自动调用
	 // 在实际开发中,析构函数的作用就是断开socket连接或者断开连接
//		~Father(){
//			
//		}

	}
	class MainClass {
		public static void Main (string[] args) {
			//结构体是值类型
			// 结构体中的new它不是开辟空间,既然要开辟空间,必然就会有性能上的损失,因为托管堆需要优化,
			// 结构体损耗性能比较小,如果你设计的数据是小型,轻量级的这时可以采用结构体存储
			// 结构体可以指定结构体成员在内存中的分布
			Father father = new Father();
			father.Height = 1.86f;
			Console.WriteLine (father.Height);
			father.Say ();
//
			// 1.创建学生结构体,包含姓名、年龄、学号、分数等信息, 并赋予其值,输出结构体成员的值;

			//	2.有5名学生保存在结构体数组中,编程找出分数最高者, 输出该学生的全部信息;

			//	3.对上述5名学生数组按年龄进行排序,并输出;

			//练习4:
			//设计一个计算面积类,该类含有一个接收两个参数(长,宽)的构造方法.
			//并且含有一个普通方法可以计算长方形面积
			//要求1:设计N个派生类,分别可以计算梯形面积,三角形面积,以及圆面积的方法
			//要求2:改上体为结构体,重新实现需求.

			//练习5:
			//			1.(Fraction)类:
			//			1)、成员变量
			//			私有字段以及可读可写属性:分子、分母

			//			2.成员方法:
			//			(1)打印分数信息(例如: 1 / 3)
			//			(2)约分
			//			(3)创建一个方法交换分子和分母的值
			//			(4)创建一个方法能同时得到加、减、乘、除、求余运算;

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

			//练习7:
			//定义一个结构体Vector
			//成员如下 x,y(坐标值整型)
			//设计一个类,可以接收一个结构体变量的方法,显示该x,y在地图中显示的位置
			//比如 (0,1)
			//*Me***
			//*****
			//*****
			//*****

			//练习8:
			//			创建一个英雄结构体变量,成员包含英雄当前状态。
			//			英雄的可以有名字,HP,MP等属性
			//思考:假设有另外一个英雄也是结构体,在保证代码不重复的前提下如何能快速创建另外一个英雄.

			//练习9:
			//设计一个计算类,所在程序集为A,该类含有一个可以计算加减乘除取余的方法.
			//要求,在B程序集使用A程序集的计算类,算出结果.

			//练习10:
			//设计一个类作为基类,该基类可以处理网络信号来提示用户当前的网络状态.
			//设计其子类,覆盖父类处理信号的方法为处理异常中断信号,提示用户当前网络状态.
			 
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值