C#的一些分析和理解
MagicianThirteen
这个作者很懒,什么都没留下…
展开
-
关于List源码的分析
List是c#中的一个最常见的可伸缩数组组件,不用手动去分配数组大小初始容量是0优点:使用索引方式提取数组很快,通用性高缺点:扩容时会很糟糕,每次针对数组进行new操作都会造成内存垃圾,给gc带来巨大负担。效率不高常用接口分析(1)Add接口给定对象添加到列表的末尾,列表的大小+1容量不够,将会增加到当前容量的两倍4,8,16,32,64,128溢出(大约2gb)之前,会允许列表增长到最大容量(2)Remove接口删除给定索引处的元素,列表大小减1返回此列表范围内给定值首次出现的索引原创 2022-03-06 16:50:18 · 279 阅读 · 1 评论 -
空接合运算符??和空条件运算符?
空接合运算符:当前面的变量为null是,给个默认的值int? myI4=null;Console.WriteLine(“myI4:{0}”,myI4??-1);//-1myI4=10;Console.WriteLine(“myI4:{0}”,myI4??-1);//10空条件运算符:?检查引用变量为空还是包含一个对象引用if(students!=null)studentCount=students.length;等价的写法studentCount=students?.length;..原创 2021-10-10 11:32:39 · 111 阅读 · 0 评论 -
ref与out
//ref out//函数参数的修饰符//当传入的值类型参数在内部修改时,或者引用类型参数在内部重新声明时,外部的值会发生改变 //ref static void ChangeValueRef(ref int value) { value = 3; } static void ChangeArrayRef(ref int[] arr) { arr = new i原创 2021-05-23 10:34:35 · 53 阅读 · 0 评论 -
C#入门之for循环
(一)for循环语法for(初始表达式;条件表达式;增量表达式){//循环代码逻辑;}初始表达式:一般声明一个临时变量,用来计数条件表达式:表明进入循环的条件 一个bool类型的结果(bool变量,条件运算符,逻辑运算符)增量表达式(步长):用初始表达式中的变量 进行 自增减运算执行顺序:见图书写规则:初始表达式:声明变量,可以连续声明,以分号结尾条件表达式:只要是bool结果的表达式都可以增量表达式:执行一次循环逻辑过后要做的事情,做啥都行//例子for(int i=10;i原创 2021-02-19 00:55:57 · 7275 阅读 · 2 评论 -
C#入门之do-while循环
游戏开发里用的不多如果里面有continue是回到while不是回到do作用:先至少执行一次循环语句块的逻辑,再判断条件是否继续do{}while(bool类型的值);//切记这里有个分号//例子int a=0;do{Console.WriteLine(a);++a;}while(a>2);//例子do{Console.WriteLine(“1”);continue;//如果里面有continue是回到while不是回到do}while(false);...原创 2021-02-16 17:28:07 · 435 阅读 · 0 评论 -
C#入门之while循环
作用:让顺序执行的代码,可以被重复执行,不停的循环某块代码,直到跳出这个条件(一)whilewhile(bool类型的值){}控制循环逻辑的关键词break:跳出当前循环,与在switch中的break异曲同工。continue:回到循环开始,继续执行//break例子1while(true){ Console.WriteLine("break before"); break; Console.WriteLine("break after");}//break例子2原创 2021-02-16 17:01:04 · 2214 阅读 · 0 评论 -
C#入门之条件分支语句
(一)if作用:让顺序执行的代码产生分支(1)if(2)if-else(3)if-elseif-else(产生n条分支)(二)switchPs:常量这里不能写一个范围,只能写一个值switch(变量){ case 常量: 满足要执行的代码逻辑 break; case 常量: 满足要执行的代码逻辑 break; default: 如果上面都不满足,就会执行default里的逻辑 break;}//不写case后面的break,就叫贯穿满足某些条件时原创 2021-02-15 21:23:03 · 201 阅读 · 0 评论 -
C#入门之各种运算符
C#入门之条件运算符(如<=这种)(一)条件运算符的基本运用(二)各种应用的写法(三)不能进行范围比较(四)不同类型之间的比较C#入门之逻辑运算符(一)逻辑与(有假则假)(二)逻辑或(有真则真)(三)逻辑非(四)混合使用优先级问题(五)逻辑运算符的短路规则C#入门之位运算符(一)位与&(有0则0)int a=1;//001int b=5;//101int c=a&b//001转成十进制就是1(二)位或|(有1则1)(三)异或^(相同为0,不同为1)(原创 2021-02-15 17:51:58 · 288 阅读 · 0 评论 -
C#入门之字符串拼接
string s1= string.Format("{0},{1}", “ni”, “hao”);Console.WriteLine(s1);Console.WriteLine("{0},{1},{2}", “ni”, “hao”, “ma”);原创 2021-02-15 16:51:36 · 222 阅读 · 0 评论 -
C#入门之算数运算符
1.赋值符号2.算数运算符加 +减 -乘 *除 /float t = 2.1f / 5.1f;//0.41176468float t = 2f / 4f;//0.5取余 %3.算数运算符的优先级4.算数运算符的复合运算符+=-=*=/=%=5.算数运算符的自增减a++:先用再加++a:先加再用算时间的算术题//987652秒有多少天,多少小时,多少分,多少秒int total = 987652;int oneDay = 60 * 60 * 24;int oneH原创 2021-02-15 15:57:44 · 233 阅读 · 0 评论 -
C#入门之异常捕获
作用:通过对异常捕获的学习 可以避免当代码报错时 造成程序卡死的情况try{//希望进行异常捕获的代码块//放到try中//如果try中的代码 报错了 不会让程序卡死}catch(Exception e){//如果出错了 会执行 catch中的代码 来捕获异常}//可选部分finally{//最后执行的代码 不管有没有出错 都会执行其中的代码}ps:try-catch可以用多个,避免try里面一出错后面就不执行了,比如每一次输入都可以用try-catch例子:try{原创 2021-02-15 15:18:30 · 215 阅读 · 0 评论 -
C#入门之隐式转换、显示转换
类型转换(一)隐式转换隐式转换的基本规则:不同类型之间的自动转换(一般都是属于一种比如都是整型或者都是浮点),大范围装小范围,比如long可以装int,但特殊类型bool,char,string之间是不存在隐式转换的。有符号可以隐式转换无符号的,但是要大范围装小范围。浮点数可以装载任何类型得整数,当超过有效数字位后,会用科学计数法。decimal不能隐式得转float和double,但是可以转各种类型得整数。整数不能隐式得转浮点,因为整数不能存小数char类型的字符对应的数字就是个ascii码原创 2021-02-15 14:17:01 · 2671 阅读 · 0 评论 -
C#入门之零散小知识点
//变量声明了不赋值使用会不安全//小数不加f会默认成doublesizeof(int);char是两个字节驼峰命名法:myName,变量名帕斯卡命名法:ControlFun,函数,类c#对大小写敏感常量:const,且必须初始化,而且不能被修改,作用申明一些常用的不变的变量,如pi,速度,时间间隔,弧度,最大血量转义字符:字符串的一部分,用来表示一些特殊含义的字符,比如在字符串中表现单引号,引号,空行,取消转义字符用string a = @“hhahahha\a\ha”;打印出来hhaha原创 2021-02-13 16:12:12 · 161 阅读 · 4 评论 -
委托和事件的区别
作者:Jaraxuss链接:https://www.zhihu.com/question/21638630/answer/156701628来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。先不着急看代码 ,从字面上理解 “委托”,即:将事情托付给别人做,而非自己亲自做。宏观上看,委托就是一种通知机制,在我(通知者)需要做某事的时候,发起通知(Invoke),你们(委托列表中的订阅者)得到通知后,帮我完成某事(委托列表中的方法被顺序执行)。有些初学者可能觉得委托没什么用,转载 2020-09-07 09:26:52 · 407 阅读 · 0 评论