c#
土土土~
黄梅时节家家雨,青草池塘处处WA
展开
-
c# 函数返回多个返回值的方式
class Program { static void Main(string[] args) { new Program().Start(); } void Start() { int i; float f; (i,f) = f1(); //或者这样写也行 //va原创 2021-11-08 21:39:19 · 1242 阅读 · 0 评论 -
lua学习笔记
LuaEnv luaEnv = new LuaEnv();先构造lua的运行环境c#中执行lua执行一条语句 //执行一句lua语句 luaEnv.DoString("print('i love you 3000');");执行一个脚本//执行一个lua脚本luaText = Resources.Load<TextAsset>("ForMyTest.lua");luaEnv.DoString(luaText.text);luaEnv.DoString("require '转载 2021-05-15 16:41:40 · 257 阅读 · 0 评论 -
c# foreach原理
要想使用foreach遍历就要使这个类继承自IEnumerabler接口,foreach的底部也是调用的这个接口里面的函数只有实现了IEnumerable接口的类(也叫做可枚举类型)才能进行foreach的遍历操作,集合和数组已经实现了这个接口,所以能进行foreach的遍历操作集合继承IEnumerable这个接口,而IEnumerable的 IEnumerator GetEnumerator()方法 可以获得一个可用于循环访问集合的 对象没有不知道怎么才能解释清楚,自己实现一个foreach就知原创 2021-03-03 18:09:44 · 407 阅读 · 1 评论 -
c# 容器探索
c# list底层原理:c#的list底层就是c++的vector 只不过初始内存为4个容量大小,每次扩容为2倍扩容,和vector一样申请新的内存,然后复制原创 2021-01-23 12:52:18 · 3530 阅读 · 6 评论 -
c# 扩展方法
之前在用unity DoTween这个插件的时候,突然想到GameObject对象并没有哪些所谓的插件里面的方法,但是为什么每一个gameobject还能够调用dotween里面的方法呢后来一查资料才知道,c#有个东西叫方法的扩展格式:被扩展的方法一定写出静态 第一个参数为 (this 扩展的类名 变量名 , …)举个例子: interface IMyInterface { void Test1(); } class MyClass : IMyI原创 2021-01-07 21:19:10 · 178 阅读 · 0 评论 -
c#协变与逆变
逆变:子类变成父类协变:父类变成子类in和out:只能用来修饰委托和接口 类和结构体不行in:只能当做参数 逆变out:只能当做返回值,不能当形参 协变以下都是错误的: delegate T TestIn<in T>(T t); //不能返回T类型 delegate T TestOut<out T>(T tem); //T类型不能当做形参作用:1 out修饰的的泛型类型,只能作为返回值类型,in修饰的泛型类型,只能作为参数类型2 遵循里式替换原则 用他原创 2021-01-07 20:56:09 · 274 阅读 · 0 评论 -
c# 中class与struct的区别(类与结构体的区别)
1 类是引用类型,结构体是值类型2 类在堆上分配内存,结构体在栈上分配内存3 结构体不能继承类和结构体,也不能被继续,但是可以实现接口4 结构体默认构造函数不能重写,默认存在,而类的默认构造函数可以重写5 结构体中的成员不能在声明的时候赋值,而类中声明的成员是可以直接赋值的,应为.NET框架帮助我们执行了某些操作,吧赋值放在了构造函数里面...原创 2020-10-13 21:19:44 · 141 阅读 · 0 评论 -
c#中类的执行顺序
不考虑继承的话,类的执行顺序如下:1静态字段2静态构造函数(类被实例化的时候或者调用静态成员的时候调用静态构造,且只调用一次,注意:只是在第一次进入类的时候才会调用,并且所有的静态都是在第一次进入的时候调用,第二次不会 )3实例字段4实例构造考虑继承的话,类的执行顺序如下:1子类静态成员2子类静态构造3子类实例成员4父类静态成员5父类静态构造6父类实例成员7父类实例构造8子类实例构造有如下代码 /// <summary> /// 类的执行顺序(不考虑继原创 2020-10-13 21:15:05 · 2383 阅读 · 0 评论