Unity系统班之第七课

2021-04-01 10:00发布

一、属性

属性的语法格式
public 类型名 属性名
{
  set
  {
     字段名称 =value;
  }
  get
  {
     return  字段名称;
  }
当属性访问器中不需要其他逻辑时,可以使用自动属性,不过需要注意的是就是声明自动属性时,编译器将创建一个私有的匿名后备字段,该字段只能通过属性的get和set访问器进行访问.

访问器:声明类时,通常将成员变量声明为private,以防止直接访问成员变量而引起的恶意操作,但是这并不是不允许访问的,而是通过公共接口间接访问.所谓公共接口,就是程序员设计人员在类中定义与各个私有成员变量相关的公共方法,以提高安全级别.习惯上,称具有private访问权限的成员变量为属性,把与之对应的公共方法称为访问器.访问器根据功能区分为读访问器和写访问器

1.属性名称和字段名称保持一致,区别是首字母大写
2.属性名后面不能有小括号,属性的类型和字段的类型保持一致
3.为了保护数据的安全性
4.sethe get 固定写法,value 是关键字,用来给字段赋值
5.属性的访问和字段一样,通过=赋值.
6.如果属性中只有getname当前属性为只读,不能进行赋值
7.属性(Property)是类,结构和接口的命名成员.类或结构中的成员变量称为域.属性是域的扩展,且可使用相同的语法来访问.它们使访问器让私有域的值可被读写或操作.
8.例如:有一个名为Student的类,带有age,name和code的私有域.我们不能在类的范围意外直接访问这些域,但是我们可以拥有访问这些私有域的属性.
9.属性的访问器(accessor)包含有助于获取(读取或计算)或设置(写入)属性的可执行语句,访问器声明可包含一个get访问器,一个set访问器,或者同时包含二者.
10.抽象属性:抽象类可拥有抽象性,这些属性应在派生类中被实现.

string newId = "2314";
第一次设置


属性的访问
dh.Id = "13175718739";
Console.WriteLine(dh.Id);

练习:给上面的name和color添加属性,并设置它们的值
dh.Name = "大黄";
dh.Skin = Color.white;
Console.WriteLine(dh.Name);
Console.WriteLine(dh.Skin);

二、 值类型和引用类型

栈区:存放值类型的数和方法中的参数,存取速度快,如果系统检测到某一个变量不再使用那么会自动回收
堆区:引用类型的对象放在堆区
常量区:存放常量值
静态区:const和static修饰的变量放在常量区
代码区:存放代码

C语言程序语言中的动态数据存储区主要有两个类:一类是栈(STACK)内存区域,另一类是堆(HEAP).
栈内存将从高地址向低地址分配,堆内存则将从低地址向高地址分配
堆内存使用链表来实现,而栈内存使用线性存储的方式.
栈内存是由编译器管理的,而堆内存是由程序调用具体库函数管理的
栈内存使用过程是先入后出
在入栈(PUSH ,压栈)的过程中,计算机根据目前栈指针的地址将寄存器的内容放入内存.
在出栈(POP)的过程中,计算机根据目前栈指针的地址中的内存方法放入寄存器.

栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈
堆区(heap);一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,注意它与结构中的堆是两回事,分配方式倒是类似于链表
全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域.程序结束后有系统释放.

寄存器:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)

值类型
int a = 10;
int b = 20;
b = a;
Console.WriteLine("a=" + a);
  Console.WriteLine($"a的地址是{getMemory(a)},b的地址是{getMemory
b)}");

引用类型传递的是地址,两个变量指向的其实是同一块区域
int[] arr = { 1, 2, 3 };
brr[0] = 4;
Console.WriteLine("arr=" + arr[0]);

练习:封装一个冒泡排序方法,该方法没有返回值
输出排序的结果

练习:定义一个男人类,一个女人类,分别创建一男一女两个对象,有一个民政局类,民政局的行为是办理结婚证
Men nan = new Men();
nan.name = "大黄";
nan.sex = Sex.男;
Women nv = new Women();
nv.name = "小黄";
nv.sex = Sex.女;
MingZhengJu marry = new MingZhengJu();


三、引用参数(ref)

 1.在形参前面加ref可以将值类型当成引用类型一样来使用.
 2.调用时实参前面也需要加ref
 3.out 不用初始化

四、输出参数(out)

1.如果方法中的形参使用out修饰,那么调用方法时也需要使用out
2.使用out修饰实参,实参可以没有初始值,因为在方法中必须对out修饰的形参赋值,所有初始值没有意义
3.out的作用就是让一个方法可以返回多个值

五、可变数组参数

使用params关键字修饰的形参为可变数组


心得体会:

       耽搁了几天,今后必然每日完成任务!!!