一、类、对象、类成员
1.类和对象的关系:对象是类经过“实例化”后得到的实体
2.类的三大成员:
- 属性
- 方法
- 事件
3.静态成员和实例成员:
- 静态(static)成员在语义上表示它是“类的成员”
- 实例(非静态)成员在语义上表示它是“对象的成员”
- 绑定(binding)指的是编译器如何把一个成员与类或对象关联起来
4."."操作符——成员访问操作符
二、C#语言的基本元素
- 关键字(Keyword)
- 操作符(Operator)
- 标识符(Identifier)
需要注意命名规范、大小写规范
变量名用驼峰法(eg:myVariable),名称空间、类名、方法名用pascal法(eg:MyVariable)
【和java有区别,在java里,方法名用驼峰法命名】 - 标点符号
- 文本(字面值)
- 整数
- 多种后缀
- 实数
- 多种后缀
- 字符
- 字符串
- 布尔
- 空(null)
- 整数
- 注释和空白
- 单行注释 //
- 多行注释 /* */
三、类型、变量、方法
【类型】也称为数据类型
【变量】是存放数据的地方,简称“数据”
【方法】旧称函数,也称为“算法”
C#是一种强类型语言,强类型语言指数据受数据类型约束严格的语言。
四、变量
从表面上看,变量的用途是存储数据。实际上,变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量。
变量一共有7种,分别是:静态变量、实例变量、数组元素、值参数、引用参数、输出形参、局部变量。
而狭义的变量也就是程序员通常说的变量指的是局部变量,因为其他种类的变量都有自己的约定名称。
简单来讲,局部变量就是方法体(函数体)里面声明的变量。局部变量在栈上分配内存。变量的默认值为0。
五、类型
C#的五大数据类型:
类 (Classes): 如Windows,Form,Console,String
结构体 (Structures): 如Int32,Int64,Single,Double
枚举 (Enumerations): 如HorizontalAlignment,Visibility
接口 (Interfaces)
委托 (Delegates)
C#类型的派生谱系:
引用类型:类、接口、委托
值类型:结构体、枚举
值类型的变量内含变量值本身。
引用类型也称为参考类型,和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值,类似C中的指针。
六、堆栈
程序的内存空间分为栈空间和堆空间,值类型的数据在栈空间中分配,而引用类型数据在堆空间中分配。
【栈空间】是一种先进后出的数据结构。用于存储以下类型的数据:
- 某些类型变量的值
- 程序当前的执行环境
- 传递给方法的参数
【堆空间】是一块内存空间,在堆空间中可以分配大块的内存以存储某类型的数据对象。与栈不同,堆里的空间能够以任意顺序存入和移出。
七、拆箱和装箱
值类型之间的转换有隐式转换和显示转换。另外装箱和拆箱也属于一种类型转换。
【装箱】指的是把「栈」上的值类型的数据封装成一个object实例(隐式转换),放到「堆」上的过程
int a = 100;
object x = a;
【拆箱】指的是把「堆」上object实例里的值按照要求拆成目标类型的数据(显示转换),再存储到「栈」上的过程
int a = 100;
object x = a;
int b = (int)x;
Console.WriteLine(b);
装箱和拆箱都会损失程序的性能