C#笔记
一、命名空间(namespace)与类(class)
命名空间就像书架,类就像有名字的书本,书本也有可能存在相同的名称,但在不同书架中,则互不干扰,否则是在同一书架的重载。
二、动态链接库(dll)
有黑盒与白盒之分
- dll引用黑盒(无源代码,无法自己修改):通过作者提供,或者在解决方案中的NuGet获取
- 项目引用白盒(有源代码,自己可以修改)
该在哪个dll类库,就在哪个类库,程序代码要求高内聚,低耦合
三、类的三大成员
属性(property):存数据,表示类或对象当前状态
方法(Method):类似C语言中的函数
事件(Events):类或者对象通知其他类或者对象的机制
四、+=符号为事件处理器,执行方法
+=加两下TAB键,即可补充方法
五、标记
关键字、操作符(运算思想)、标识符(变量名)、标点符号、文本(字面值)

var 自动获取变量类型
六、内存(内部存储单元)以及数据类型(Type)

在C#中不推荐使用指针
弱数据类型语言,怕混淆数据结构
所以C#为强数据类型语言,但也有dynamic的动态类型为弱数据类型语言,一般用于底层代码交互
Stack 栈
Stack Overflow 栈溢出
Heap 堆 要注意避免内存泄漏
performance monitor 系统查看进程所占有资源窗口
七、C#五大数据类型
类、结构体、枚举、接口、委托
这五大数据类型都是以Object为基类型
其中,结构体与枚举为值类型;
类、接口、委托为引用类型

八、七大变量
- 静态变量
- 实例变量
- 数组
- 值参数
- 引用参数 ref
- 输出参数 out
- 局部变量
九、数据存储
变量名相当于变量的值在内存中的存储位置(内存编号)or(内存地址)
带有正负的类型,其最高位占位表示符号位,0表示正,1表示负
如sbyte中从100转化为-100的位运算

值类型,根据类型在栈中分配空间位置,如int类型,那么就在栈中分配4字节的内存空间
引用类型,首先有没有实例化对象,都会在栈中分配4字节已经初始化为0的空间,因为这4字节空间是用来储存所实例化对象的内存编码,在堆中内存编号转化成二进制存在栈中刚刚分配的空间;
然后在堆中分配类的成员(字段)所需的占位空间。
- 局部变量在栈(Stack)中分配内存
- 变量只有被实例化的类的成员才有
- 常量 Const
- 装箱(Boxing)与拆箱(Unboxing)
装箱:
若为值类型,将栈中的变量的值,放到堆中,再让堆中的内存编号转成二进制放回自己Object所处的空间。
拆箱:将堆中的值放回给指定内存
点击查看代码
int x=100;
object obj;
obj=x; //装箱
System.Console.WriteLine(obj);
int y;
y=(int)obj; //拆箱
System.Console.WriteLine(y);
十、类的成员 方法
在声明时,叫形参(Paramter)
在调用时,叫实参(Argument)

浙公网安备 33010602011771号