20200117 .net 001
第一部分:面向对象 封装 继承(里氏转换) 多态
第二部分:值类型、引用类型、字符串操作
第三部分:集合文件操作
第四部分:正则表达式
第五部分:XML操作
第六部分:委托、事件
第七部分:反射。
1、变量的命名
首先我们要保证的就是变量的名称一定要有意义(就是我们看到了变量的名字,就知道变量在这段程序中的作用)
Camel:多余用给变量或者字段命名,第一个单词的首字母小写,其余每个单词的首字母大写。
我们给字段命名,前面必须加下划线。
_highSchoolStudent
Pascal:要求我们每个单词的首字母都要大写,其余每个单词的首字母小写。
HighSchoolStudent int max= GetMax();
int min= GetMin(); 2、进程
一个应用程序就是一个进程,而一个进程又是由多个线程组成的。
进程帮助我们在内存中分配应用程序执行所需要的空间。
//存储着我们当前正在运行的进程
//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();
---->
我们可以通过进程来直接操作应用程序。
3、面向对象复习
类决定了对象将要拥有的属性和行为。
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;
}
//设计一个函数 用来打开指定的文件
public void OpenFile()
{
ProcessStartInfo psi = new ProcessStartInfo(this.FilePath + "\\" + this.FileName);
Process pro = new Process();
pro.StartInfo = psi;
pro.Start();
}
}
封装:
--->减少了大量的冗余代码
--->封装将一坨很难理解的功能封装起来,但是对外提供了一个很简单的使用接口。我们会使用就OK。
继承:
--->减少了类中的冗余代码
--->让类与类产生了关系,为多态打下了基础。
特性:
单根性:一个子类只能有一个父类
传递性:爷爷类 爹类 儿子类
里氏转换:
1、子类可以赋值给父类
2、如果父类中装的是子类对象,则可以将这个父类转换为对应的子类对象
---->关键字
1、is:返回bool类型,指示是否可以做这个转换
2、as:如果转换成功,则返回对象,否则返回null
作用:我们可以将所有的子类都当做是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断改变。
多态:
--->虚方法
virtual override
--->抽象类
abstract override
--->接口
interface
4、关键字
new
1、创建对象
--->在堆中开辟空间
--->在开辟的堆空间中创建对象
--->调用对象的构造函数
2、隐藏父类的成员
this
1、代表当前类的对象
2、显示的调用自己的构造函数
base
1、显示调用父类的构造函数
2、调用父类的成员 5、抽象类实现多态练习
模拟将外部的移动存储设备插到电脑上进行读写数据。
U盘
Read()
Write()
移动硬盘
Read();
Write();
MP3
Read();
Write();
PlayMusic();
手机....平板电脑...... 6、接口
---->接口是一种能力
---->接口也是一种规范
---->如果你继承了这个接口,就必须按照接口的要求来实现这个接口。
interface I开头...able结尾 7、石头剪刀布案例
玩家
--->出拳的方法,是我们指定的
电脑
--->出拳的方法,随机的
裁判
--->判断输赢或者平手 石头1 剪刀2 布3
玩家赢:石头1 剪刀2 =-1 剪刀2 布3 =-1 布3 石头1=2
平手:玩家-电脑=0;
电脑赢: 8、访问修饰符
public private internal protected protected internal
public:在哪都可以访问
private:私有的,只能在当前类的内部进行访问
internal:只能在当前程序集中访问。
protected:受保护的,可以在当前类以及该类的子类中访问 注意点:
1、能够修饰类的访问修饰符只有两个:public internal(默认就是internal)。
2、在同一个项目中,public的权限跟internal是一样的。
3、子类的访问权限不能高于父类。
1、导入命名空间
命名空间就是类的"文件夹"。类就是"文件夹"中的文件。需要导入命名空间
添加引用:
如果我需要在一个项目中,访问另一个项目中的某一个类
--->添加对另一个项目的引用
--->导入命名空间 2、静态和非静态
静态成员:被static修饰
实例成员:不被static修饰
静态成员先于实例成员被加载到内存中,只有创建了对象,才有实例成员。
静态类中只能存在静态成员
调用:
静态成员调用:
类名.静态成员名;
实例成员调用:
实例名.实例成员;(实例就是我们的对象)
什么时候使用静态?
---->作为工具类
---->在整个项目中资源共享,正因为它是资源共享的,所以静态成员必须要等到整个项目都结束的时候
才会被资源释放。
在我们的项目中应该尽可能的少使用静态成员。
继承是创建对象的过程。
3、设计模式
---->单例设计模式
在整个程序中,我们要保证对象必须是唯一的。
实现:
---->第一步:构造函数私有化
---->第二步:声明一个静态字段,作为全局唯一的单例对象
---->第三步:声明一个静态函数,返回全局唯一的对象
---->简单工厂设计模式
核心:把所有的子类都当做父类来看待
练习:
提示用户分别的输入两个数字:
再输入运算符:返回一个计算的父类,并调用方法得到结果。
Add Sub Cheng Chu
建筑行业最早应用到设计模式这个概念
1、注册一个公司 2、招兵买马
3、投标买地
4、安排施工队开始施工
5、卖楼 设计模式就是用来专门解决一些特定的问题。 4、类库
.dll文件,我们使用类库来帮助我们封装一些常用的功能 5、值类型和引用类型
值类型:int double char bool decimal struct enum
引用类型:string 数组 自定义类 接口 委托 值类型的值存储在内存的栈上,引用类型的值存储在堆中。
栈上存储数据的效率要高于堆。 值传递:把值类型作为参数传递,把值本身进行传递。
注意:
ref可以把值传递改变为引用传递。
引用传递:把引用类型的值作为参数传递,传递的是引用。 6、字符串的学习
重要特性:
不可变性,我们不管对字符串做什么操作,都会在内存中产生一块新的实例。
驻留池
我们可以将一个字符串看作是char类型的只读数组。
GC:Garbage Collection垃圾回收 ,每隔一段时间,会扫描整个内存,发现,如果有的空间没有被指向。则立即把它销毁。
1、StringBuilder
它就是拼接字符串的一个工具,拼成完成后,还是需要将它转回字符串。 2、ref参数
ref参数侧重于将一个值带到函数中进行改变,再讲改变后的值带出去。ref参数在函数内不用赋值
函数外必须为ref参数赋值。 3、out参数 4、params可变参数 5、集合的学习
非泛型集合
ArrayList
Hashtable
泛型集合
List<T>
Dictionary<Tkey,Tvalue> 6、装箱和拆箱
装箱:值类型---->引用类型
拆箱:引用类型--->值类型
我们判断是否发生了拆箱或者装箱,首先要判断这两种数据类型是否存在继承关系。
你装箱的时候拿什么类型装的箱,你拆的时候,就得拿什么类型去拆。 7、List<T>常用的函数
Add():添加单个元素
AddRange():添加一个集合
Insert():插入一个元素
InsertRange():插入一个集合
Remove():移除指定的元素
RemoveAt():根据下标移除元素
RemoveRange():移除一定范围内的元素
ToArray():集合转换成数组
ToList():数组转换成集合 8、编码格式
将字符串是怎样的形式保存为二进制。
ascii 256 6000 GB2312
GBK GB18030 ISO
Unicode
utf-16
utf-8
出现乱码的原因:我们保存这个文件的时候采取的编码跟打开这个文件的时候采取的编码格式不一致。 文本文件:拖到txt中还能看得懂得就是文本文件。
20200117 .net 001的更多相关文章
- swift 001
swift 001 = 赋值是没有返回值的 所以 int a=10; int b=20; if(a=b){ printf("这个是错误的"); } swift 中的模运算 是支 ...
- [SDK2.2]Windows Azure Virtual Network (4) 创建Web Server 001并添加至Virtual Network
<Windows Azure Platform 系列文章目录> 在上一章内容中,笔者已经介绍了以下两个内容: 1.创建Virtual Network,并且设置了IP range 2.创建A ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
<zw版·Halcon-delphi系列原创教程> Halcon分类函数001·3D函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“proce ...
- Android 开发错误信息001
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessExceptio ...
- python解无忧公主的数学时间编程题001.py
python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...
- php大力力 [005节] php大力力简单计算器001
2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...
- php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
- 001 The Hello World In Csharp
C#是面向对象编程语言,语法和JAVA非常相似.接下来让我们看一下C#的Hello world. //001.cs using System; public class Hello { public ...
随机推荐
- vue3的打包及打包的坑
1.vue3没有vue.config.js文件,在根目录下建一个vue.config.js文件 2.vue.config.js 3.vue3.3版本前的打包命令 vue3.3版本之后 我用3.3之 ...
- rabbitmq使用总结
rabbitmq 架构图 RabbitMQ 中的 broker 是指什么?cluster 又是指什么 broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 Rabb ...
- Docker快速上手之搭建SpringBoot项目
Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...
- 并发队列之LinkedBlockingQueue
上一篇我们看了一下这个队列ConcurrentLinkedQueue,那就是一个无界非阻塞链表,我们这次来看看LinkedBlockingQueue,这个队列看名字就知道是一个阻塞式队列(也就是一个单 ...
- C++基类和派生类的析构函数
1.派生类也不能继承基类的析构函数. 2.与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉. 3.构造函数和虚构函数 ...
- js的三种输出语句,以及html的运行循序
js最常见的三种输出语句 1.console.log()这个语句是在浏览器控制台输出的.进入网页点击f12可查看 2.alert()弹出一个对话框, 3.document.write这个语句是在页面输 ...
- String、StringBuilder、StringBuffer区别
=====================================String=================================★1.它在java.lang包中.String类 ...
- 死磕dtd(1)
看到安卓开发里大量的xml文件和layout里的Android UI开始复习一下xml xml的校验规则依据dtd dtd里面大小写敏感.....查找了好久才发现这个问题 <?xml versi ...
- 视觉slam十四讲第七章课后习题6
版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...
- 牛客练习赛25 A 因数个数和(数论分块)
题意: q次询问,每次给一个x,问1到x的因数个数的和. 1<=q<=10 ,1<= x<=10^9 1s 思路: 对1~n中的每个数i,i作为i,2i,3i,...的约数,一 ...