C#笔记

一、命名空间(namespace)与类(class)

命名空间就像书架,类就像有名字的书本,书本也有可能存在相同的名称,但在不同书架中,则互不干扰,否则是在同一书架的重载。


二、动态链接库(dll)

黑盒白盒之分

  1. dll引用黑盒(无源代码,无法自己修改):通过作者提供,或者在解决方案中的NuGet获取
  2. 项目引用白盒(有源代码,自己可以修改)
    该在哪个dll类库,就在哪个类库,程序代码要求高内聚,低耦合

三、类的三大成员

属性(property):存数据,表示类或对象当前状态

方法(Method):类似C语言中的函数

事件(Events):类或者对象通知其他类或者对象的机制


四、+=符号为事件处理器,执行方法

+=加两下TAB键,即可补充方法


五、标记

关键字、操作符(运算思想)、标识符(变量名)、标点符号、文本(字面值)
image
var 自动获取变量类型


六、内存(内部存储单元)以及数据类型(Type)

image
在C#中不推荐使用指针
弱数据类型语言,怕混淆数据结构
所以C#为强数据类型语言,但也有dynamic的动态类型为弱数据类型语言,一般用于底层代码交互

Stack 栈
Stack Overflow 栈溢出
Heap 堆 要注意避免内存泄漏
performance monitor 系统查看进程所占有资源窗口


七、C#五大数据类型

类、结构体、枚举、接口、委托
这五大数据类型都是以Object为基类型
其中,结构体与枚举为值类型
类、接口、委托为引用类型
image


八、七大变量

  • 静态变量
  • 实例变量
  • 数组
  • 值参数
  • 引用参数 ref
  • 输出参数 out
  • 局部变量

九、数据存储

变量名相当于变量的值在内存中的存储位置(内存编号)or(内存地址)

带有正负的类型,其最高位占位表示符号位,0表示正,1表示负
如sbyte中从100转化为-100的位运算
image

值类型,根据类型在栈中分配空间位置,如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)

posted @ 2022-01-30 22:25  Ariaaaaa  阅读(8)  评论(0)    收藏  举报