
C#
weixin_43842987
这个作者很懒,什么都没留下…
展开
-
二分查找体会
C#版本(最基础版二分查找),时间复杂度为O(logn),找不到返回-1这种查找只会有两种情况:1.元素刚好出现在二分法的中心(此时返回的是mid)2.循环到只剩最后两个元素,在进行最后一次二分法(此时返回的是low)。由此可得,这种写法的二分法被找到元素的位置一定出现在low或mid位置。另:使用(height-low)/2+low代替(height+low)/2是防止数组越界 public int search(int[] nums, int target) {原创 2021-09-18 10:26:16 · 181 阅读 · 0 评论 -
C# 冒泡排序及其拓展
一、最基本的冒泡排序我们之前接触的冒泡排序都是只能对int类型进行排序bool swapped =true;do{ swapped=false; for(int i=0;i<sortArray.Length-1;i++){ if(sortArray[i]>sortArray[i+1]){ int temp=sortArray[i]; sortArray[i]=soryArray[i+1]; sortArray[i+1]=temp;原创 2021-07-08 10:48:44 · 221 阅读 · 0 评论 -
C#委托和多播委托
一、概念 我们需要把方法当作参数传递的时候就会用到委托。简而言之,委托是一个类型,这个类型可以赋值一个方法的引用二、委托的声明及使用委托声明delegate void IntMethodInvoke(int x); //定义了一个名为IntMethodInvoke的委托,这个委托指向带有一个int类型参数的方法,并且返回值是void委托例子使用委托类型调用方法class Program{ private delegate string GetAString().原创 2021-05-21 12:02:58 · 183 阅读 · 0 评论 -
Unity数据持久化——LitJson、JsonUtility
LitJson是第三方插件JsonUtility是Untiy自带的一、JsonUtility创建Jsonusing System.Collections;using System.Collections.Generic;using UnityEngine;//先导入System命名空间才有Serializable关键字using System;//使用JsonUtility必须要在转成Json数据的类上加关键字[Serializable]public class Person原创 2021-05-18 16:15:46 · 389 阅读 · 0 评论 -
Unity的序列化和反序列化——XML和JSON
一、序列化、反序列化什么是序列化、反序列化?序列化就是把数据对象转换成二进制流保存为本地文件的过程。 反序列化就是把储存有数据信息的二进制文件还原成数据对象的过程。序列化的意义以某种储存形式(二进制/XML,今天只讲二进制方法)使自定义对象持久化 方便将对象从一个地方移动到另一个地方(转移文件再反序列化读取) 使游戏数据不容易被直接篡改二、XML和JSONXML扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标转载 2021-05-18 11:39:11 · 415 阅读 · 0 评论 -
集合类——列表List
一、数组和列表的对比数组:大小固定,空间不足也不能再次申请,可以存储基本类型和对象类型列表:空间是动态增长的,方便添加、删除数据以及其他操作,仅能存储对象类型二、列表的本质列表内部数据是使用数组进行存储的一个空的列表内部会有一个长度为0的数字当给列表添加元素时,列表的容量会扩大为4当添加第五个元素的时候,列表的容量会扩大为8添加第九个元素,列表容量扩为16…以此类推。即列表中的容量发生改变的时候,会自动创建一个新的数组,并且通过Array.Copy()方法将旧数组中的元素复制到新数组中。原创 2021-04-13 15:47:17 · 238 阅读 · 0 评论 -
派生类的构造函数
一:调用父类无参构造函数格式父类class BaseClass{ public BaseClass(){ Console.WriteLine("baseclass无参构造函数"); }}子类class DerivedClass:BaseClass{ public DerivedClass():base(){ Console.WriteLine("这个是DerivedClass的无参构造函数"); }原创 2021-04-10 19:21:26 · 126 阅读 · 0 评论 -
密封类和密封方法
密封类无法被继承。方法想要成为密封方法前提是其必须是一个已经重写的方法表示这个方法不能再次被重写了。格式密封类sealed class 方法名{}密封方法父类class BaseClass{ public virtual void Move(){} }子类class DerivedClass:BaseClass{ public sealed override void Move(){}}...原创 2021-04-10 17:35:23 · 83 阅读 · 0 评论 -
C#隐藏方法
方法的签名:方法的返回值,方法名以及参数列表统称为方法的签名隐藏方法定义:如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有分别声明为virtual 和override,派生类就会隐藏基类的方法(派生类的方法要用new关键字声明)和重写方法不同,重写是吧原来的方法改了,隐藏只是把父类中的方法看不到了,实际仍然存在,使用父类声明对象仍然可以访问基类class MyBaseClass(){ public void Mythod(){ }}派生类(在派生类中会把基类的原创 2021-04-10 16:34:15 · 381 阅读 · 0 评论 -
虚方法
把一个基类函数声明为virtual,就可以在任何派生类中重写该函数class MyBaseClass{ public virtual string VirtualMethod(){ //方法内容 }}在另一个派生类中重写另外一个函数时,要使用override关键字显示声明class MyDerivedClass:MyBaseClass{ public override string VirtualMethod(){ //重写原创 2021-04-10 16:23:24 · 69 阅读 · 0 评论 -
堆和栈与数据类型的关系
一、堆和栈内存分为堆空间和栈空间堆空间:空间较大,读取速度慢栈空间:空间较小,读取速度快堆是一块内存区域,堆内的内存能够以任意顺序存入和移除二、数据类型C#的变量可以分为三类:值类型(Value types)引用类型(Reference types)指针类型(Pointer types)(一)、值类型可以直接分配一个值给该类变量,它们是从System.ValueType中派生出来的,如下图值类型只需要一段单独的内存,用于存储实际的数据(单独定义的时候放在栈中)(二)、引用类型(放原创 2021-04-10 14:36:41 · 247 阅读 · 0 评论