目录
-
常用转义符
显示符号,需要添加\+特殊字符,显示出来 \为转义符(在要显示的每个符号前都加上\)
\+特殊字符,就可以在运行时显示这个特殊字符
\n 表示换行
\b 表示退格
\\ 表示一个\
\t 表示水平制表符,让后面的字符尽量与上一个字符对齐
\" 表示一个双引号
算术运算符 + -* / %(取余 取模)
变量需要先声明,再赋值,才能使用
-
常用语句
循环语句
调用方法判断是否输入指定字符,不正确重新输入
public static string IsYourN(string YourN) //限制用户只能输入 y 或 n
{
while(true)
{
if(YourN=="y"||YourN=="n")
{
return YourN;
}
else
{
Console.WriteLine("输入错误,请重新输入!"); // 此语句放到这,代码不可重复使用
YourN = Console.ReadLine();
}
}
}
判断输入是否是数字,输入错误,重新输入
public static int IsName(string strName) //用户输入数字,输入错误,请重新输入的方法
{
while(true)
{
try
{
int number = int.Parse(strName);
return number;
}
catch
{
Console.WriteLine("输入错误,重新输入");
strName = Console.ReadLine();
}
}
}
判断语句
数组的声明与使用
-
运算符
复合运算符:+=、 -=、*= 、/= 、%=
关系运算符:<、>、==、!=、<=、>=
逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)
算术运算符 + -* / %(取余 取模)
-
注释
单行注释://
多行注释:/* 注释内容 */
文档注释:/// (在类或方法上一行写注释符号)
折叠代码:#region和#endregion(折叠冗余代码)
快捷键:重排代码:CTRL+K+ D(代码没有错误才可以重排)
-
构造函数
构造函数是用来创建对象的特殊方法,方法名和类一样,没有返回值,连void 都不用。
构造函数可以有参数,new对象的时候传递函数参数即可。
如果不指定构造函数,则类有一个默认的无参构造函数。
如果指定了构造函数则不再有默认的无参构造函数,如果需要无参构造函数, 则需自己来写。
构造函数可以重载,也就是有多个参数不同的构造函数
析构函数
析构函数:程序执行完之后调用。
不能在结构中定义析构函数,只能对类使用析构函数
一个类只能有一个析构函数
无法继承或重载析构函数
无法调用析构函数,它们是被自动调用的
析构函数既没有修饰符,也没有参数。
-
枚举
- 什么是枚举?
枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。
2、枚举类型变量赋值与使用
枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。
C#中的枚举
枚举类型是一种值类型,它用于声明一组命名的常数。
(1)枚举的声明:枚举声明用于声明新的枚举类型。
访问修辞符 enum 枚举名:基础类型
{
枚举成员
}
-
异常处理
1、什么是异常?
异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应。
- C#处理异常的四个关键词(try、catch、finally 和 throw)
-Try:一个try块标识了一个将被激活的特定的异常的代码块,后跟一个或多个catch块。
-catch:程序通过异常处理程序捕捉异常。Catch关键字标识异常的捕获
-finally:finally块用于执行给定的语句,不管异常是否被抛出都会执行
-throw:当问题出现时,程序抛出一个异常,使用throw关键字来完成
-
方法
静态方法和实例方法的区别
- 在外部调用静态方法时,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的方式,而实例方法只有“对象名.方法名”的方式。即调用静态方法无需创建对象。
- 静态方法在访问本类成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法。实例方法则无此限制。
-
面向对象
面向对象和面向过程的区别
面向对象:是把构成问题实物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
面向过程:是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。
面向对象三个基本特征
- 封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
- 继承:继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
- 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
-
里氏转换
里氏转换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
里氏转换原则,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能在基类的基础上增加新的行为。
即,1、子类可以赋值给父类。
2、如果这个父类中装的是子类对象,可以把这个父类强转为子类。
-
集合
通过构造函数可以添加一个数组
通过add()方法可以添加数组,但是算成一个元素
通过addrenge()可以添加数组,
如何向集合中插入数据?
集合的常用方法
集合和数组的区别
使用集合需要引用命名空间:using System.Collections;
-
哈希表
哈希表: 以键值对的形式存志,key代表键,value代表值,两者成对存在(键不能 相同)。
如:
#region 哈希表
Hashtable ht = new Hashtable();
//哈希表,以键值对的形式存值,key代表键,value代表值,两者成对存在---键不能相同
ht.Add("dage", "001");
ht.Add("erge", 22);
ht.Add("sange", 1003);
ht.Add(new person("sige", 'G', 18), 105);
//显示
Console.WriteLine("{0}-----{1}", "dage", ht["dage"]);
//遍历哈希表
foreach (object item in ht.Keys )
{
Console.WriteLine("{0},------{1}",item,ht[item]);
}
Console.WriteLine(ht["erge"]);
Console.ReadKey();
#endregion
-
File文件
创建文件、删除文件、判断文件是否存在、移动文件路径
如:
#region File类 创建一个文件,删除一个文件,判断文件是否存在
string path = @"C:\IT\CS学习\C#练习\3-压缩包\book1.txt";//给出路径
File.Create(path);//在制定路径下创建一个文件,如果文件名相同则覆盖原文件
File.CreateText(path); //创建打开用于写入UTF-8编码文本的文件
File.Delete(path);//删除指定路径下的文件,直接删除,不放到回收站,如果没有文件,则不报异常
bool flag = File.Exists(path);//判断指定路径下是否有该文件,如果有则删除,如果没有则创建该文件
if (flag)
{
File.Delete(path);
}
else
{
File.Create(path);
}
//移动文件的路径
string path1 = @"C:\IT\CS学习\C#练习\3-压缩包\里氏转换\移动.txt";
File.Move(path, path1); //将第一个路径下的文件移动到第二个路径下(可以修改文件名字),当第二个路径存在该文件时,报异常
File.Copy(path, path1); //将一个文件复制到另一个路径中
File.Copy(path, path1, true); //如果要复制的另一个路径存在同名的文件,则覆盖原文件,利用本方法的重载。
#endregion
以及读、写文件;创建、删除文件夹;获取文件创建时间、访问时间、修改时间等。
-
虚方法
- 虚方法可以有实现体,若一个实例方法的声明中含有virtual修饰符,则称该方法为虚方法。使用virtual修饰符后,不允许再有static、abstract、override修饰符。
- 抽象方法和虚方法的区别
- 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。
- 抽象方法只能再抽象类中声明,虚方法不是,如果类包含抽象方法,那么该类也是抽象的,也必须 声明类是抽象的。
- 抽象方法必须再派生类中重写,这一点和接口类似,虚方法不需要在派生类中重写。
-
重写、重载
重写:在C#中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
重载:重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法