加载中...

复习笔记-Unity

泛型与Object区别

  1. Object是所有类型的基类,泛型是一种数据类型,将类型参数化达到代码复用提高软件开发效率
  2. 泛型不用装箱拆箱,泛型是替换,将泛型参数替换成具体的类型,并且不需要强制类型转换,并且编译时自动检查类型安全,避免隐性的类型转换异常。

Toggle与Button

监听事件:
Toggle:OnValueChanged
Button:onClick

MVC

Model,View,Controller

Module-->Controller

数据存储在ModuleData中,包含数据的定义
模块在Model中,通过删除Module删除页面

Controller

用于连接View和Model

协程与线程区别,或优势

补位

缓冲池

委托和事件

  1. 委托相当于函数容器,首先需要定义一个函数模板
  2. 可以通过+=注册,Invoke调用
  3. Delegate存在被赋值的风险
  4. event 操作赋值将不会发生 将赋值操作设置为Private
  5. event 只能在函数内部执行

背包系统的数据库设计

序列化与反序列化

Func和Action

一个有返回值一个没有返回值,委托

C#语法

重载和重写

生命周期函数

FixedUpdate函数:物理计算相关,可以在Player Settings中设置帧率,也可以利用Application调用帧数

值类型和引用类型

值类型存储在栈上,
引用类型存储在堆上

深拷贝浅拷贝

假设T是一个引用类型
T t1=new T();
T temp=t1;

浅拷贝:temp对象和t1对象共同指向同一块堆空间
深拷贝:需要重新new T()再将t1中的所有值都赋值再temp中

垃圾回收机制

托管方式:将未使用的资源清除,然后压缩
处理非托管资源方法:
析构函数,在对象被回收时调用的函数

public class TestDispose : IDisposable{
  private bool mDisposed;
  public TestDispose()
  {
  }
  ~TestDispose(){
    Dispose();
  }
  public void Dispose()
  {
  //释放非托管资源
    if (!mDisposed){
    GC.suppressFinalize(this); //标记gc不再调用析构函数
    mDisposed = true;
    }
  }
}

装箱和拆箱

装箱:栈=>堆

int a=6;
Object intObject=a;

拆箱

a=(int)intObject;

接口 interface 和抽象类abstract

interface
可以是一些动作,没有明显的类型区分,比如:攻击,行走......
abstract
类型比较明显,人类->中国人

for 和 foreach

foreach能够遍历非线性容器:Hash

foreach(var item in intList){
  //无法修改item
}

string不变性

不会创建相同的字符串
字符串不适合频繁的拼接,例如下面的情况👇

string s=string.Empty;//不合适string s="";
//判空 string.IsNullOrEmpty(s);
for(int i=0;i<100;i++){
  s=s+"abc";
}

//可以采用
string.Concat(s,"abc");
//也可以
StringBuilder strbuilder=new ..();
for(int i=0;i<100;i++){
  strbuilder.Append("abc");
}

数组和List区别

int[] intArray=new int[5];
List<int> intList=new List<int>(5);
intList.Add(0);

静态构造函数

访问静态成员时,触发,并只执行一次

常用容器类

Stack

先进后出

Queue

先进先出

Array数组

ArrayList

Object类型,不安全

List

泛型

删除效率高一些

HashTable 哈希表

与Dictionary差别
Hashtable和Dictionary都是.Net下的表示键值对的集合,那么我们在使用中该选择Hashtable还是Dictionary?下边我们看看他们之间的区别:
1、Dictionary<K,V>在使用中是顺序存储的,而Hashtable由于使用的是哈希算法进行数据存储,是无序的。2、Dictionary的key和value是泛型存储,Hashtable的key和value都是object
3、Dictionary是泛型存储,不需要进行类型转换,Hashtable由于使用object,在存储或者读取值时都需要进行类型转换,所以比较耗时
4、单线程程序中推荐使用Dictionary,有泛型优势,且读取速度较快,容量利用更充分。多线程程序中推荐使用
Hashtable,默认的Hashtable 允许单线程写入,多线程读取,对Hashtable进一步调用Synchronized()方法可以获得完全线程安全的类型.而Dictionary非线程安全,必须人为使用lock语句进行保护,效率大减。
5、在通过代码测试的时候发现key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hashtable快。
对于如何进行选择,个人倾向于使用Dictionary,原因是:
1、Dictionary是可排序的,Hashtable如果想排序还需要采用别的方式进行
2、Dictionary有泛型优势,效率要高

HashSet

一组不重复的元素集合

ref和out

传值和传引用
两个关键字作用差不多,都是能在函数内修改外边的值

ref:修饰引用参数
外边的变量必须赋值/创建,否则会报错
调用外面的变量,并能够修改他的值
可以直接使用外边的值

out:修饰输出参数

函数内,必须先赋值/创建这个变量,否则报错

都能够修改值

posted @ 2023-06-20 19:05  lxp_blog  阅读(12)  评论(0编辑  收藏  举报