1.变量
供程序操作的存储区域名字。(由type)
无全局变量。(static substitute)
局部变量必须在代码中显示初始化,之后才能使用他的值。初始化不一定在声明变量时进行,编译器会通过方法检测所有路径。如果在局部变量初始化之前使用了他,就会产生错误。
2.常量
字符:普通字符(’x’)转义字符(’\t’)通用字符(‘\u02C0)
3.Method
定义方法 调用方法 参数
ref vs out: 都是传值。
out必须在函数内初始化(没感受到)。out相当于多个返回值。
4.Nullable
??(合并运算符):加一个判断,如果为null返回一个值。
5.Array
Array.Sort()只支持一维数组
6.Struct
C# 结构的特点
在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点:
• 结构可带有方法、字段、索引、属性、运算符方法和事件。
• 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
• 与类不同,结构不能继承其他的结构或类。
• 结构不能作为其他结构或类的基础结构。
• 结构可实现一个或多个接口。
• 结构成员不能指定为 abstract、virtual 或 protected。
• 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
• 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
类 vs 结构
类和结构有以下几个基本的不同点:
• 类是引用类型,结构是值类型。
• 结构不支持继承。
• 结构不能声明默认的构造函数。
• 补充:类与结构体的区别
• 1、结构体中声明的字段无法赋予初值,类可以:
• struct test001
• {
• private int aa = 1;
• }
• 执行以上代码将出现“结构中不能实例属性或字段初始值设定”的报错,而类中无此限制,代码如下:
• class test002
• {
• private int aa = 1;
• }
• 2、结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制:
• 补充:类与结构的选择
• 首先明确,类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。故而,当我们描述一个轻量级对象的时候,结构可提高效率,成本更低。当然,这也得从需求出发,假如我们在传值的时候希望传递的是对象的引用地址而不是对象的拷贝,就应该使用类了。
7.Enum
一组整型常量。
值类型。(不能继承,或传递继承)
8.Class
析构函数:类特殊的成员函数,当对象超出执行范围时执行。
类名加~,无返回值,无参数。
用于程序结束前释放资源(内存,关闭文件),不能重构,或继承。
静态成员:当一个成员定义为静态,无论多少个对象创建,都会只有一个该成员的副本。
9.继承
允许我们用一个类定义另一个类,这使得创建和维护程序变得容易。同时也有利于重用代码和节省开发时间。
继承思想实现了属于关系(IS-A)。例如,哺乳动物 属于(IS-A) 动物,狗 属于(IS-A) 哺乳动物,因此狗 属于(IS-A) 动物。
10.多态
一个行为的多种行为。动态和静态
静态:函数重载和运算符重载。
函数重载:同一个函数名不同定义。参数类型,个数。返回值不同,不是重载。
动态:通过抽象或虚方法实现的。
11.运算符重载
写法。
可重载。
12.Interface
定义“是什么”,派生类决定“怎么做”。
派生类需要实现接口的所有成员。
13.预处理器指令
指导编译器,在编译之前对信息进行预处理。
#开始。 C和C++用来定义宏。
常见的预处理指令。
14.正则表达式
9个类别
15.异常处理‘
异常是程序执行期间的出现的问题。
System.Exceptio System.ApplicationException System.SystemException
自定义异常(继承System.Application)
public class TempIsZeroException: ApplicationException
{
public TempIsZeroException(string message): base(message)
{
}
}
处理:4个关键词 try catch finally throw
C#基本语法 记录
最新推荐文章于 2024-07-21 16:29:46 发布