第一部分:面向对象 封装 继承(里氏转换) 多态
第二部分:值类型、引用类型、字符串操做
第三部分:集合文件操做
第四部分:正则表达式
第五部分:XML操做
第六部分:委托、事件
第七部分:反射。正则表达式
一、变量的命名 首先咱们要保证的就是变量的名称必定要有意义(就是咱们看到了变量的名字,就知道变量在这段程序中的做用) Camel:多余用给变量或者字段命名,第一个单词的首字母小写,其他每一个单词的首字母大写。 咱们给字段命名,前面必须加下划线。 _highSchoolStudent Pascal:要求咱们每一个单词的首字母都要大写,其他每一个单词的首字母小写。 HighSchoolStudent int max= GetMax(); int min= GetMin(); 二、进程 一个应用程序就是一个进程,而一个进程又是由多个线程组成的。 进程帮助咱们在内存中分配应用程序执行所须要的空间。
//存储着咱们当前正在运行的进程
//Process[] pro = Process.GetProcesses();
//foreach (var item in pro)
//{
// //item.Kill();不试的不是爷们
// Console.WriteLine(item.ProcessName);
//}
//使用进程来打开应用程序
//Process.Start("notepad");//打开记事本
//Process.Start("mspaint");//打开画图工具
//Process.Start("iexplore", "http://www.baidu.com");
//Process.Start("calc");//打开计算器
//使用进程来打开文件
//封装咱们要打开的文件 可是并不去打开这个文件
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\SpringRain\Desktop\打开文件练习.exe");
//建立进程对象
Process pro = new Process();
//告诉进程要打开的文件信息
pro.StartInfo = psi;
//调用函数打开
pro.Start();
Console.ReadKey();编程
----> 咱们能够经过进程来直接操做应用程序。 三、面向对象复习 类决定了对象将要拥有的属性和行为。
class BaseFile
{
//字段、属性、构造函数、函数、索引器
private string _filePath;
public string FilePath//ctrl+R+E
{
get { return _filePath; }
set { _filePath = value; }
}设计模式
//自动属性 prop+两下tab
public string FileName { get; set; }数组
public BaseFile(string filePath, string fileName)
{
this.FilePath = filePath;
this.FileName = fileName;
}ide
//设计一个函数 用来打开指定的文件
public void OpenFile()
{
ProcessStartInfo psi = new ProcessStartInfo(this.FilePath + "\\" + this.FileName);
Process pro = new Process();
pro.StartInfo = psi;
pro.Start();
}
}函数
封装: --->减小了大量的冗余代码 --->封装将一坨很难理解的功能封装起来,可是对外提供了一个很简单的使用接口。咱们会使用就OK。 继承: --->减小了类中的冗余代码 --->让类与类产生了关系,为多态打下了基础。 特性: 单根性:一个子类只能有一个父类 传递性:爷爷类 爹类 儿子类 里氏转换: 一、子类能够赋值给父类 二、若是父类中装的是子类对象,则能够将这个父类转换为对应的子类对象 ---->关键字 一、is:返回bool类型,指示是否能够作这个转换 二、as:若是转换成功,则返回对象,不然返回null 做用:咱们能够将全部的子类都当作是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断改变。 多态: --->虚方法 virtual override --->抽象类 abstract override --->接口 interface 四、关键字 new 一、建立对象 --->在堆中开辟空间 --->在开辟的堆空间中建立对象 --->调用对象的构造函数 二、隐藏父类的成员 this 一、表明当前类的对象 二、显示的调用本身的构造函数 base 一、显示调用父类的构造函数 二、调用父类的成员 五、抽象类实现多态练习 模拟将外部的移动存储设备插到电脑上进行读写数据。 U盘 Read() Write() 移动硬盘 Read(); Write(); MP3 Read(); Write(); PlayMusic(); 手机....平板电脑...... 六、接口 ---->接口是一种能力 ---->接口也是一种规范 ---->若是你继承了这个接口,就必须按照接口的要求来实现这个接口。 interface I开头...able结尾 七、石头剪刀布案例 玩家 --->出拳的方法,是咱们指定的 电脑 --->出拳的方法,随机的 裁判 --->判断输赢或者平手 石头1 剪刀2 布3 玩家赢:石头1 剪刀2 =-1 剪刀2 布3 =-1 布3 石头1=2 平手:玩家-电脑=0; 电脑赢: 八、访问修饰符 public private internal protected protected internal public:在哪均可以访问 private:私有的,只能在当前类的内部进行访问 internal:只能在当前程序集中访问。 protected:受保护的,能够在当前类以及该类的子类中访问 注意点: 一、可以修饰类的访问修饰符只有两个:public internal(默认就是internal)。 二、在同一个项目中,public的权限跟internal是同样的。 三、子类的访问权限不能高于父类。
一、导入命名空间 命名空间就是类的"文件夹"。类就是"文件夹"中的文件。须要导入命名空间 添加引用: 若是我须要在一个项目中,访问另外一个项目中的某一个类 --->添加对另外一个项目的引用 --->导入命名空间 二、静态和非静态 静态成员:被static修饰 实例成员:不被static修饰 静态成员先于实例成员被加载到内存中,只有建立了对象,才有实例成员。 静态类中只能存在静态成员 调用: 静态成员调用: 类名.静态成员名; 实例成员调用: 实例名.实例成员;(实例就是咱们的对象) 何时使用静态? ---->做为工具类 ---->在整个项目中资源共享,正由于它是资源共享的,因此静态成员必需要等到整个项目都结束的时候 才会被资源释放。 在咱们的项目中应该尽量的少使用静态成员。 继承是建立对象的过程。 三、设计模式 ---->单例设计模式 在整个程序中,咱们要保证对象必须是惟一的。 实现: ---->第一步:构造函数私有化 ---->第二步:声明一个静态字段,做为全局惟一的单例对象 ---->第三步:声明一个静态函数,返回全局惟一的对象 ---->简单工厂设计模式 核心:把全部的子类都当作父类来看待 练习: 提示用户分别的输入两个数字: 再输入运算符:返回一个计算的父类,并调用方法获得结果。 Add Sub Cheng Chu 建筑行业最先应用到设计模式这个概念 一、注册一个公司 二、招兵买马 三、投标买地 四、安排施工队开始施工 五、卖楼 设计模式就是用来专门解决一些特定的问题。 四、类库 .dll文件,咱们使用类库来帮助咱们封装一些经常使用的功能 五、值类型和引用类型 值类型:int double char bool decimal struct enum 引用类型:string 数组 自定义类 接口 委托 值类型的值存储在内存的栈上,引用类型的值存储在堆中。 栈上存储数据的效率要高于堆。 值传递:把值类型做为参数传递,把值自己进行传递。 注意: ref能够把值传递改变为引用传递。 引用传递:把引用类型的值做为参数传递,传递的是引用。 六、字符串的学习 重要特性: 不可变性,咱们无论对字符串作什么操做,都会在内存中产生一块新的实例。 驻留池 咱们能够将一个字符串看做是char类型的只读数组。 GC:Garbage Collection垃圾回收 ,每隔一段时间,会扫描整个内存,发现,若是有的空间没有被指向。则当即把它销毁。
一、StringBuilder 它就是拼接字符串的一个工具,拼成完成后,仍是须要将它转回字符串。 二、ref参数 ref参数侧重于将一个值带到函数中进行改变,再讲改变后的值带出去。ref参数在函数内不用赋值 函数外必须为ref参数赋值。 三、out参数 四、params可变参数 五、集合的学习 非泛型集合 ArrayList Hashtable 泛型集合 List<T> Dictionary<Tkey,Tvalue> 六、装箱和拆箱 装箱:值类型---->引用类型 拆箱:引用类型--->值类型 咱们判断是否发生了拆箱或者装箱,首先要判断这两种数据类型是否存在继承关系。 你装箱的时候拿什么类型装的箱,你拆的时候,就得拿什么类型去拆。 七、List<T>经常使用的函数 Add():添加单个元素 AddRange():添加一个集合 Insert():插入一个元素 InsertRange():插入一个集合 Remove():移除指定的元素 RemoveAt():根据下标移除元素 RemoveRange():移除必定范围内的元素 ToArray():集合转换成数组 ToList():数组转换成集合 八、编码格式 将字符串是怎样的形式保存为二进制。 ascii 256 6000 GB2312 GBK GB18030 ISO Unicode utf-16 utf-8 出现乱码的缘由:咱们保存这个文件的时候采起的编码跟打开这个文件的时候采起的编码格式不一致。 文本文件:拖到txt中还能看得懂得就是文本文件。