吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14805|回复: 38
收起左侧

[其他转载] 《C#图解教程》笔记整理

  [复制链接]
hack_hu 发表于 2018-10-29 21:38
不知是否合规,这是我一礼拜整理的C#笔记
思维导图

运算符递增 / 递减 运算符:初学者总是分不清 ++ / -- 运算在 C# 中 ++var 称为前置递增, var++ 称为后置递增。 两者的区别体现在返回给表达式的值上。 前置递增 (++var) 返回给表达式的是新值即  var自加 后 的值, 而 后置递增 (var++) 返回表达式的是旧值即 var自加 前 的值。 #示例 : x=5; y = x++ ; // result : y = 5, x = 6 ( 递减同理 )移位运算符 :  #实际是转换成二进制进行移位<< 左移位 。代表十进制整数乘 2 。
例 :

2 << 3 = 2 * 2 * 2 * 2 =16;

>> 右移位 。代表十进制整数除 2 。
例 :

2 >> 3 = 2  /( 2 * 2 * 2 ) = 1/4;

数组数组 实际上是由一个变量名称表示的一组同类型数据元素。每个元素通过变量名称和一个或者多个方括号 ([ ]) 的索引来访问。C# 数组特点 :1、 C#不支持动态数组,数组一旦创建大小就固定。2、 数组索引号从 0 开始。 即维度长度 (维度方向元素个数) 为 N , 索引号的范围是 0 ~ N-1 。### C# 中大致分成两种数组:一维数组 (单行元素或元素向量)#### 多维数组 分为 :矩形数组 : 某个维度的所有子数组有相同长度的多维数组 。 例 : int [ , ]  Arr= new int[2,2] (数组长度必须放在实例化对象里)交错数组 : 每一个子数组都是独立数组的多维度数组。
例 :int[ ][ ] Arr= new int[2][ ] ;
Arr[0] = new int[ ] {0,1} ;
Arr[1] = new int[ ] {2,2};
数组是引用类型, 与所有的引用类型一样, 引用在栈或堆上, 而数组总是在堆上。
尽管数组本身总是引用类型, 但元素可为值或是引用类型 。 存储元素为值类型 , 数组为值类型数组。存储元素为引用类型, 数组为引用类型数组。数组声明后, 维度数固定。而维度长度要等到数组实例化后才会固定。交错数组是数组的数组, 所以交错数组的初始化要等顶层数组初始化完成后才能完成初始化。 ( 可参考上文的交错数组声明示例 )数组从 System.Array 类中继承的方法、属性 :Rank  (  属性  ) : 获取数组的维度数。Length ( 属性 ) : 获取数组中所有维度的元素总和。GetLength ( 方法 ) : 返回数组的维度长。Clear ( 方法 ) : 将某一范围内的元素设置为 0 或 null 。Sort ( 方法 ) : 在一维数组中对元素进行排序。BinarySearch ( 方法 ) : 使用二进制搜索, 搜索一维数组中的值。Clone ( 方法 ): 进行数组的浅复制 —— 对值类型和引用类型都只复制元素。IndexOf ( 方法 ) : 返回一维数组中的某一范围元素。Reverse ( 方法 ) : 反转一堆数组中的某一范围元素。GetUpperBound (方法) : 获取制定维度的上限。枚举枚举是值类型, 因此直接存储他们的数据, 而不是分开存储。枚举只有一种类型的成员 : 命名的整数值常量。注意 :1、 在枚举中没有分号2、 每个枚举类型都有一个底层整数类型, 默认为 Int3、 每个枚举类型成员都被赋予一个底层类型常量值4、 在默认情况下, 编译器把第一个成员赋值为 0 , 并对每一个后续成员赋值比前一个成员多 1 。委托同类一样,委托是一种用户自定义的类型。 但类表示的是数据和方法的集合, 而委托持有的是一个或多个方法, 以及一系列预定义操作。  ( 委托和类的使用差别不大 )委托的声明与方法相似 : 包含返回类型和签名。 返回类型和签名指定了委托接受的方法的形式。与方法的不同点 :    委托以 delegate 关键字开头。    委托没有方法体。    如果委托有返回值且在调用列表中有一个以上的方法则 :        1、 调用列表中最后一个方法返回的值就是委托调用返回的值。        2、 调用列表中其他方法的返回值被忽略。    如果方法只会被使用一次, 没有创造独立的具名方法, 可以使用匿名方法 ( 在初始化委托时内联声明的方法 )与委托的具名方法不同,匿名的方法可以访问他们外围作用域的局部变量和环境 ( 即方法捕获, 此时 外部局域变量的作用域发生改变, 只能在匿名方法内部调用 )事件许多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知。 发布者 / 订阅者模式 的出现正是为了满足这种需求。接口接口是指特定一组函数而不实现他们的引用类型, 只能通过类和结构来实现接口。接口声明不能包含 :     数据成员 、 静态成员 。    不能包含任何实现代码, 在每一个成员声明的主体后必须使用分号。只能包含 :    方法 、 属性 、事件 、索引器 。
按照惯例,接口名称必须从大写的 I 开始 示例 : ISaveable
接口的访问性和接口成员的访问性之间有区别 :接口的声明可以有任何的访问修饰符,  如 : public但接口的成员是隐式 public, 不允许有任何的访问修饰符, 包括 public 。实现接口的重要事项 :若类实现了接口, 它必须实现接口的所有成员。若类从基类继承并实现了接口, 基类列表中的基类名称必须放在所有接口之前。 ( 每个类只能有一个基类 )
与类不同, 接口可以在基接口中有任意多个接口。转换转换是接受一个值并使用它作为另一个类型的等价值的过程。对于预定义类型, C# 会自动将一个数据类型转换成另一个数据类型 ( 即 隐式转换 )。 只针对于那些从源类型到目标类型不发生数据丢失的情况。若源类型的任意数值在被转换成目标类型时会丢失值, 则必须进行强制转换 ( 即 显式转换)。C# 中提供了 checked 运算符和 checked 语句来检测类型转换是否溢出。装箱 实际上是创建副本 ( 原始值类型和引用类型副本)。 两个副本都可以独立操作。拆箱  是把装箱后的对象转换回值类型的过程。 (若值拆箱后为非原始类型时会抛出一个异常)对于类和结构,用户可以通过 implicit 和 explicit 进行 隐式 和 显式 的转换TryParse 可判断是否成功转换成目标类型泛型C# 中的泛型可以让多个类型共享一组代码 。 通过声明类参数化的代码, 用不同的类型进行实例化泛型可用于 : 类 、结构 、 接口  、委托 和 方法优点 :无论构造类型的数量有多少, 我们只需要写一个实现代码。易于维护, 修改 代码时只需要修改一处代码就好。注意 : 代码重用 != 复制粘贴 。当你的程序多处进行复制粘贴时,说明存在代码冗余。命名空间命名空间 是共享命名空间名的一组类和类型。命名指南 :使用公司名称开始命名在公司名称后面跟着技术名不要把命名空间命名为和类或类型相同的名称命名空间可以被嵌套。 分为 :原文嵌套 : 把命名空间的声明放在一个封装的命名空间声明体内部分离的声明 : namespace MyName —— 嵌套 :  namespace Myname.OtherName命名空间指令 。例 : using System
别名指令 : using SC = System
异常异常是程序中的运行时错误, 它违反了系统约束或程序应用约束, 或出现了在正常操作时未预料的错误。
C# 中通过 : try 、 catch 、 finally 控制异常
throw 语句可以使代码显式的引发一个异常。 例 : throw new ExceptionObject  ;
预处理指令#defrine 和 #undefine ( 指令声明 / 取消 定义编译符号) 只能用在源文件的第一行,即任何 C# 代码未定义之前, 可重复定义。未定义之前, 可重复定义。
## 字符串是不可改变的 —— 他们具有不可变性 !insert 、 Tolower 操作是返回修改的字符串副本
对于一个 string 任何  「  改变 」 都会分配给一个新的恒定字符串
析构函数每个类只能有一个析构函数
析构函数不能有参数
析构函数不能有访问修饰符
析构函数名称与类名称相同, 但要在前面加一个波浪符 ~
析构函数只能作用于类的实例,因此没有静态构析函数
不能在代码里显式的调用析构函数, 系统会在垃圾回收时调用析构函数
原则 : 不在不需要时使用析构函数,这会严重影响性能。

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
打字的小强 + 1 + 1 我很赞同!
cswswy + 1 热心回复!
小肥仔 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Pear + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vae3489 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hack_hu 发表于 2020-8-22 11:08
pythonddr120 发表于 2020-8-20 20:20
大佬,45岁还可以学吗?我现在对编程很感兴趣

讲实话,学编程什么时候都可以,但是找工作就不一定合适了,国外有个六十多岁的老奶奶自学编程还写了个很牛B的 App
 楼主| hack_hu 发表于 2018-10-30 14:34
 楼主| hack_hu 发表于 2018-10-29 21:39
vae3489 发表于 2018-10-29 21:47
前排学习,感谢分享技术
Pear 发表于 2018-10-29 22:27
谢谢分享
kenxue0721 发表于 2018-10-29 23:19
《C#图解教程》笔记整理 ,图片请重新传一下,失败了,看不见,
amscracker 发表于 2018-10-30 02:00
不知道在哪儿去复制的人家的图都没得了还微信公众号
haifn 发表于 2018-10-30 06:43
图不够清晰。
 楼主| hack_hu 发表于 2018-10-30 14:33
amscracker 发表于 2018-10-30 02:00
不知道在哪儿去复制的人家的图都没得了还微信公众号

微信公众号是我自己的,每周会更新一篇
 楼主| hack_hu 发表于 2018-10-30 14:35
kenxue0721 发表于 2018-10-29 23:19
《C#图解教程》笔记整理 ,图片请重新传一下,失败了,看不见,

在其他楼重新传了,你可以看一下,就不重复传占用论坛空间了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 03:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表