目录
C#是一种面向对象语言。C#源于C语言系列,采用通用的类型系统。所有C#类型均继承自一个根【Object】类型。
C#语言元素
程序结构
了解C#语言中的关键组织概念:程序、命名空间、类型、成员、程序集
类型和变量
了解C#语言中的值类型,引用类型和变量
表达式
表达式是在操作数和运算符的基础上构造而成。表达式生成的是值。
语句
语句用于表示程序的操作
类和对象
类是最基本的C#类型。对象是类实例,类是使用成员生成的。
结构
与类不同,结构是属于值类型的数据结构
数组
数组是一种数据结构,其中包含许多通过计算索引访问的变量
接口
接口定义了可由类和结构实现的协定。结构可以包含方法、属性、事件和索引器。接口不提供所定义的成员的实现代码,仅指定必须由实现接口的类或结构提供的成员
枚举
枚举类型是包含一组已命名常量的独特值类型
委托
委托类型标识对具有特定参数列表和返回类型的方法的引用。通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。委托类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还类型安全
特性
使用特性,程序可以指定关于类型、成员和其他实体的附加声明性信息。
C#命名规范
1.用Pascal规则来命名属性、方法、事件和类名。
Pascal规则是指名称中单词的首字母大写,如 EmployeeSalary
2.用Camel规则来命名成员变量、局部变量和方法的参数。
Camel命名法第一个单词的首字母小写,其他单词的首字母大写 比如 plainTextEnconding。
3.接口的名称一般以大写的I做前缀
4.类的命名,用名词或者名词短语来命名类名。
5.方法的命名,一般将其命名为动宾短语
6.代码分块,所有的成员变量声明在类的顶端,用给一个换行把他和方法分开。同时可以使用成对的#region...#endregion折叠
7.方法的书写规范 方法命名要见名知意,省略多余的注释,方法功能尽量单一
类型和变量
C#有两种类型,值类型和引用类型。值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用。
对于引用类型:两个变量可以引用同一个对象,因此对一个变量执行的运算可能会影响另一个变量引用的对象
对于值类型:每个变量都有自己的数据副本,因此对一个变量执行的运算不会影响到另一个变量(ref和out参数的变量除外)
C#值类型
C#的值类型又细分为 简单类型,枚举类型,结束类型 和可以为null的值类型。
简单类型:
有符号的整型:sbyte、short、int、long。
无符号的整型:byte、ushort、uint、ulong。
Unicode字符:char
IEEE浮点: float、double
高精度小数:decimal
布尔:bool
枚举类型:
格式为enum E{......}的用户定义类型
结构类型;
格式为 struct S{......}的用户定义类型
可以为null的值类型
值为null的其他所有值类型的扩展
引用类型
C#引用类型又细分为 类类型,接口类型,数组类型 和委托类型。
类类型:
其他所有类型的最终基类:Object
Unicode字符串: string
格式为class C{......}的用户类型
接口类型:
格式为 interface I {......}的用户定义类型
数组类型:
一维和多维,例如 int [ ] 和int [ ,]
委托类型:
格式为 delegate int D(......)的用户定义类型
创建新类型
C#程序使用类型声明创建新类型。类型声明指定新类型的名称和成员。 用户可定义以下五种类型:Class类型,结构类型,接口类型,枚举类型和委托类型
Class类型定义包含数据成员(字段)和函数成员(方法,属性及其他)的数据结构。类类型支持单一继承和多形性,即派生类可以 扩展 和专门针对基类的机制
Struct类型定义包含数据成员和函数成员的结构,与class类型相似,不过与类不同的是,结构类型是值类型,通常不需要进行怼分配。结构类型不支持用户指定的继承,并且所有结构类型均隐式继承自类型Object
Interface类型将协定定义为一组已命名的公共函数成员。实现Interface的class或Struct必须提供接口函数成员的实现代码。Interface可以继承自多个基接口,class和struct可以实现多个接口。
delegate类型表示引用包含特定参数列表和返回类型的方法。通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。委托类同于函数式语言提供的函数类型。委托也类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还类型安全。
class,struct,interface,和delegate类型全都支持泛型,因此可以使用其他类型对他们进行参数化。
enum类型是一种包含已命名常量的独特类型。每个enum类型都有一个基础类型(必须是八种整数类型之一)。enum类型的值集与基础类型的值集相同。
分支结构
if---else if--else if----
switch----case
循环结构
for循环
while循环
do-while循环
装箱与拆箱
C#采用统一的类型系统,因此任意类型的值都可视为Object。每种C#类型都直接或间接的派生自object类类型,而object是所有类型的最终基类。只需将值视为类型object,即可将引用类型的值视为对象。通过执行装箱和取消装箱(拆箱)操作,可以将值类型的值视为对象。
using System;
class BoxingExample
{
static void Main()
{
int i = 123;
object o = i; // Boxing
int j = (int)o; // Unboxing
}
}