C#面向对象编程基础-喜课堂笔记

时间:2022-05-14 23:53:13

**************【5】【C#面向对象编程基础】第1讲:类与对象****************

                *************2.1.1_类与对象的概念**************

  1.  

    C#面向对象编程基础-喜课堂笔记

  2. 研究对象的入口是:
    1. 静态特征;-------属性(什么样子)
    2. 动态特征;-------方法!(能做什么)这两个也是对象区分的重要因素!

3. 对象表示世界中的实体,面向对象编程就是将这些实体模拟到计算机中!

4. 什么是封装?

    封装是指将一个或多个小对象包装在一起,然后以新的完整对象展现在人的眼前!

封装是对象的内部特征变的隐蔽,从而更加安全!

对象是一个类别中的一个实例!

5. 什么是类?

    将对象的共同特征抽象出来,这些共同的属性和方法被组织在一个单元中,就称为类!(具有相同属性和共同方法的一组对象的特征集合!)

类具有属性和方法!

 

6. 类和对象的区别:

类是定义的一个概念模型!它是一种模型!而对象是套用这种模型实现的一个实例!

例如:电脑就是一个类!因为你不知道是具体的那一台!

7. 类定义的的模板:

C#面向对象编程基础-喜课堂笔记

8. 字段(成员变量)

C#面向对象编程基础-喜课堂笔记

9. 对象创建方法:

类 对象名 = new 类();【】

10. 对象的创建过程:

C#面向对象编程基础-喜课堂笔记

11. 面向对象的三大特征:封装、继承和多态。

12.
string.format  是格式化字符串  

有多个字符串的时候,只在内存中分配一个字符串!

例如:string info=string.Format("姓名:{0} 学号:{1}",name,n);

问题:private是什么意思?

答:private 是修饰符 它和protected, public一起,都是对类的访问权限进行修饰,或者说是限制, private,只有类内可直接访问, partial关键字的作用是将你的 class 分为多个部分,编译器会将多个部分拼到一起去。

例子:

public partial class SampleClass

{

public void MethodA() { }

}

public partial class SampleClass

{

public void MethodB() { }

}

public class SampleClass

{

public void MethodA() { }

public void MethodB() { }

} 是等价的.

 

 

                        **************2.1.2_字段与属性**************

  1. 访问修饰符:

类型:private(私有的:外部不可见)public(公有的:外部可见)

如果类型名前面不加public则程序默认为private

【蓝色方框】C#面向对象编程基础-喜课堂笔记----------字段!

2. 字段一般私有化

    属性必须公有化

    通过value将外部值附给私有字段

 

3. 属性其实是外界访问私有字段的入口,属性本身不保存任何数据

C#面向对象编程基础-喜课堂笔记

4. 属性的特殊功能:

  • 避免非法数据传入!C#面向对象编程基础-喜课堂笔记
  • 设置为只读的---将set方法去掉!
  • C#面向对象编程基础-喜课堂笔记

    属性的快捷方式:prop;

 

5. 万能转换日期用Convert.ToDateTime("1994-05-02");

6.字段与属性的比较:

C#面向对象编程基础-喜课堂笔记

7.将字段封装成属性:就是只有属性没有字段!

8.属性编写的新语法(自动属性:.NET3.0其后续版本)

public double Salary{get; set;}< =>C#面向对象编程基础-喜课堂笔记

写成这样编译器就会自动给我们添加应有的字段

这种写法的适用范围:

  • 不能直接操作私有字段
  • 不能设置只读、只写属性
  • 不能添加验证逻辑

快捷方式:prop + tab键 + tab

 

 

 

                            ***********类的方法************

  1. 方法:·

        C#面向对象编程基础-喜课堂笔记

  2. 方法的定义规范:

    访问修饰符 返回值类型 方法名(参数1,参数2)

    {

            retur n 返回值;

    }

  3. 方法名一般使用"动词"或"动宾短语"!

 

 

 

 

 

******【6】【C#面向对象编程基础】第2讲:对象类型、构造方法与OOP********

            ************2.2.1_对象的数据类型与对象销毁************

  1. 数据类型分为:
  • 基本数据类型(int、 double、 bool、枚举、结构。。)    
  • 引用数据类型:(数组、对象、string(但是实际的应用效果是值类型))
  1. 对象是引用数据类型的证明:

C#面向对象编程基础-喜课堂笔记

  1. 基本数据类型与引用数据类型的区别:

C#面向对象编程基础-喜课堂笔记

以上图解,当是基本类型时,将a附给b是将a的数据附给了b,而当是引用类型时,是将a对象的内存地址复制给了b对象,然后a和b同时指向了同一个对象,也就也就是所谓的一个人有两个名字(英文名和中文名)

 

  1. Ref的本质就是如果你既想给某个参数进行传递值,同时又想将你的值通过ref进行更改那么就是用ref !

    但是用形参的方式传递值时,是通过基本类型传递数值的!而用到ref时,它就是通过引用类型(将内存地址附给变量)进行传值!

    ***在开发中不建议使用ref

C#面向对象编程基础-喜课堂笔记

  1. Out关键字的作用:
  • 让方法返回多个返回值

C#面向对象编程基础-喜课堂笔记

out 侧重的是输出!它也是使用引用方式传递!在实践开发中不建议经常使用out关键字,可以使用后面讲的"字典集合"方式返回多个参数!

  1. 对象的销毁:

    对象具有生命周期;

利用垃圾回收机制(GC),进行销毁!

 

 

7.对象在内存中的状态:

C#面向对象编程基础-喜课堂笔记

8.存在垃圾回收机制(GC)

  • .NET虚拟机特有的机制,自动运行,并检查对象的状态
  • 发现对象不被引用时,会将释放其所占空间(销毁)

作用:GC的使用大大减少了程序员手动释放对象的操作,且程序运行稳定!

 

********2.2.2_构造方法************

  1. 系统默认生成构造方法的前提条件是:在此方法中要没有建立任何构造器方法!
  2. Private string 变量名 = string.Empty;

String.Empty 字段
.NET Framework 类库
表示空字符串。此字段为只读。命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)
protected string loginId = String.Empty;
protected string loginId = "";
"" 分配一个长度为空的存储空间
 
所以一般用string.Empty
为了以后跨平台,还是用string.empty
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:
string s = "";
string s2 = string.Empty;
if (s == string.Empty) {
// 
}
if语句成立 
判定为空字符串的几种写法,按照性能从高到低的顺序是:
s.Length == 0 优于 s == string.Empty 优于 s == "" 
您关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。textBox1.Text的值为零长度字符串 ""。

 

  1. 添加多个构造方法;

C#面向对象编程基础-喜课堂笔记

便于程序员重复写代码,我们可以用:this()

  1. 构造方法和实例方法的区别:

C#面向对象编程基础-喜课堂笔记

 

 

  1. 对象初始化器:

C#面向对象编程基础-喜课堂笔记

注意:对象初始化器里面的元素是以","分割。

6.对象初始化器和C#面向对象编程基础-喜课堂笔记【01】的区别:

  • 对象初始化器只能对属性进行初始化!而【01】而言,可以调用一些方法或者输出一些值!
  • 对象初始化器没有强制性,也就是说我想对谁初始化就对谁初始化,不强制要求一定要初始化!

而是用

C#面向对象编程基础-喜课堂笔记

就要求必须初始化,否则就出错!

C#面向对象编程基础-喜课堂笔记

 

  1. this关键字的作用:

。当成员变量和局部变量重名时使用this区分

C#面向对象编程基础-喜课堂笔记

This.studentId表示成员变量,而后面的studentId是表示形参里面的【studentId】

。构造方法时与自身使用用到!

C#面向对象编程基础-喜课堂笔记

本节总结:

C#面向对象编程基础-喜课堂笔记

***********2.2.3_类与对象总结**************

  1. 深入理解封装:

C#面向对象编程基础-喜课堂笔记

  1. 查看类视图:

C#面向对象编程基础-喜课堂笔记

 

 

 

 

 

 

3..NET 平台规定:所有类都必须继承object类!

子类可以附给父类(object)!

C#面向对象编程基础-喜课堂笔记

本节总结:

C#面向对象编程基础-喜课堂笔记

 

 

 

*********【7】【C#面向对象编程基础】第3讲:集合的应用***********

        *************2.3.1_非泛型集合ArrayList和HashTable***************

  1. 回顾数组:

C#面向对象编程基础-喜课堂笔记

 

 

  1. 如何增长数组的长度?

答案是可以,下面我们将引入ArrayList【是一个长度可变的"数组",通常称为集合!】

C#面向对象编程基础-喜课堂笔记

可以存储任何数据,因为是object类型!

  1. ArrayList集合的特点:

C#面向对象编程基础-喜课堂笔记

ArrayList集合的使用:

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

 

ArrayList使用的不足:

C#面向对象编程基础-喜课堂笔记

理论上说,ArrayList弥补了一般数组不能随意添加/删除数据的缺点!但是当删除的时候,也将集合的位序尽心了更改(数据会因为前面的数据被删/增加,而自动向前替补!所以导致位序发生了变化,导致查找数据不再容易了!因此给予这种原因,我们引入了Hashtable【哈希表】--【是按照"键--值"对方式】存取数据的集合!)

  1. Hashtable的使用:

C#面向对象编程基础-喜课堂笔记

Hashtable的遍历方法:

C#面向对象编程基础-喜课堂笔记

 

 

for 和 foreach的区别:

foreach(实例 in 实例的集合)


处理每个实例的操作;


for(整形变量作循环的计数器,通过限定条件和对计数器变量的修改空值循环次数)


每次循环执行一次指定操作


不同点 用foreach无需了解循环体究竟要执行多少次,for需要你自己通过控制计数器来控制循环体的执行次数 在大多数情况下可以互换,foreach的运行开销要小。

 

对于for来说:可以使数据以你想象的顺序进行输出,而对于foreach来说:不能保证!

例如:

C#面向对象编程基础-喜课堂笔记

***********
2.3.2_泛型集合ListT与Dictionary的使用*************

  1. ArrayList再加入不同对象时出现问题,这是我们应该加上判断!

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

如果再加其他类型时,还要添加代码,很麻烦,然后我们应想办法限制对象的类型!这就引出"泛型集合"

 

  1. 泛型集合的使用:

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

 

 

 

  1. 开发实践:List<T>集合使用

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

其中新出现了:list.Insert(1,objStu4),意思是:在制定的位置添加数据!

注意:List和ArrayList基本一样!具体请注意看上面的图片!

 

 

 

  1. 集合初始化器(在.NET 3.0 以后的版本中使用!)

C#面向对象编程基础-喜课堂笔记

 

  1. List<T(Type)>与ArrayList使用比较

C#面向对象编程基础-喜课堂笔记

 

 

 

 

 

  1. Dictionary<K,V>通常称为字典!

C#面向对象编程基础-喜课堂笔记

  1. Dictionary<K(Key),V(Value)>的使用:

C#面向对象编程基础-喜课堂笔记

  1. Dictionary<K(Key)和哈希表的比较:

C#面向对象编程基础-喜课堂笔记

 

***********
2.3.3_对象的排序*************

  1. 泛型集合List<T(Type)>中元素的排列!

C#面向对象编程基础-喜课堂笔记

这里的list.Sort();方法就是将元素按照拼音首字母升序进行排列,要是想降序排列,则用list.Reverse();方法!如果是数字,也适用!

 

  1. 对象元素的元素排序的问题:

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

  1. 进行foreach循环时,快捷键是:fore + 2tab!

 

4.如果想用姓名排序应该使用Compare To方法!

C#面向对象编程基础-喜课堂笔记

Compare To【意思是进行比较!】

 

C#面向对象编程基础-喜课堂笔记

 

 

 

 

 

 

 

  1. ICompare<T>比较器接口:

C#面向对象编程基础-喜课堂笔记

 

*************【8】【C#面向对象编程基础】第4讲:开始桌面应用程序开发***************

 

*******2.4.1_WinForm程序开发环境的使用方法*********

  1. 软件部署的架构:

B【Browser】/S【Server】架构应用程序---------(Web应用程序)

C【Client】/S【Server】架构应用程序-----------(Windows Winform 桌面应用程序)

  1.  

    C#面向对象编程基础-喜课堂笔记

  2. 查看代码快捷键;F7
  3. Partial可以将一个类分为多个类,分完之后仍然是一个整体!

    C#面向对象编程基础-喜课堂笔记

 

Program.cs文件中有Main方法,但我们在创建winform窗体应用程序的时候用的很少!

Application 是我们的静态方法!

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

  1. 窗体类:

    Form类是预定义窗体类!

C#面向对象编程基础-喜课堂笔记

  1. 简单了解类:

    C#面向对象编程基础-喜课堂笔记

    一个类只能有一个父类!避免循环继承!

Relese—是发布的意思!也就是说调试完成后,程序没有错误,才能进行发布!这也是它和Debug的区别!

  1. 窗体的设置:

C#面向对象编程基础-喜课堂笔记

 

 

******2.4.2_.NET中的事件驱动机制********

  1. 为什么使用事件

C#面向对象编程基础-喜课堂笔记

  1. 通过触发事件来调用程序!

C#面向对象编程基础-喜课堂笔记

 

3.常用的控件的重要事件

C#面向对象编程基础-喜课堂笔记

4事件的委托:将事件处理方法与事件本身关联起来!

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

 

****************************************************************1. 窗体控件的命名规范:

C#面向对象编程基础-喜课堂笔记

  1. 窗体的显示:

定义窗体对象:被调用的窗体类名 窗体对象 = new 被调用的窗体类名();

显示窗体: 窗体对象.Show();

窗体显示的另外一种方法:模式窗体(打开一个窗体,如果不关闭这个窗体的话,就不能操作另外一个窗体!)

C#面向对象编程基础-喜课堂笔记

 

 

 

  1. 在窗体中添加菜单处理事件:

C#面向对象编程基础-喜课堂笔记

  1. MessageBox对象:

C#面向对象编程基础-喜课堂笔记

MessageBox.Show("显示文本内容","标题","应出现的按耨!","提示图标");

  1. 消息框的返回值:

DialogResult(枚举类型)

C#面向对象编程基础-喜课堂笔记

 

 

 

 

****【9】【C#面向对象编程基础】第5讲:文件操作、对象序列化与XML****

  1. 数据存取与文件操作

C#面向对象编程基础-喜课堂笔记

  1. 文本文件操作:

C#面向对象编程基础-喜课堂笔记

 

  1. 逐步写入文本内容:--相当于日志文件!

C#面向对象编程基础-喜课堂笔记

  1. 删除文件和复制文件:

C#面向对象编程基础-喜课堂笔记

 

 

 

 

 

  1. 移动文件:

C#面向对象编程基础-喜课堂笔记

  1. 显示目录下的所有文件

C#面向对象编程基础-喜课堂笔记

  1. 显示指定目录下的所有子目录

C#面向对象编程基础-喜课堂笔记

 

  1. 创建目录

C#面向对象编程基础-喜课堂笔记

  1. 删除目录:

C#面向对象编程基础-喜课堂笔记

 

 

  1. 对象的特点:

C#面向对象编程基础-喜课堂笔记

  1. 保存对象的属性:

C#面向对象编程基础-喜课堂笔记

 

  1. 还原文本信息!

C#面向对象编程基础-喜课堂笔记

 

虽然这样可以储存对象的信息,也能读取其中的内容,但是如果我们添加一个对象属性,还要进入代码中,更改一大串代码,我们感觉不方便!所以我们可以使用序列化和反序列化保存于还原对象!

  1. 使用序列化和反序列化保存于还原对象!

C#面向对象编程基础-喜课堂笔记

C#面向对象编程基础-喜课堂笔记

反序列化对象的实现:

C#面向对象编程基础-喜课堂笔记

  1. 序列化与反序列化对象的应用:

C#面向对象编程基础-喜课堂笔记

  1. 什么是XML?

    C#面向对象编程基础-喜课堂笔记

  2. XML文档格式要求:
  • 确定且唯一的根元素;
  • 开始标签和结束标签匹配;、
  • 元素标签的正确嵌套!
  • 属性值要用引号括起来!
  • 同一个元素的属性不能重复!
  1. XML的语法要求?
  • 元素:<标签>文本内容</标签>
  • 处理指令:<?xml version = "1.0"?>
  • 注释:<!—这是一个XML注释-->
  • 属性:<salary currency = "US$">2500</salary>
  1. XML的应用:

跨平台数据交互,典型的应用就是webservice(网页服务)的使用

常见的webservice,比如列车时刻表

C#面向对象编程基础-喜课堂笔记

http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx

  1. XML文件读取实例:

C#面向对象编程基础-喜课堂笔记

  1. XML文件读取的基本步骤:
  • 创建文档对象
  • 加载XML文档
  • 获取根节点
  • 遍历节点并封装数据
  1. XML文件读取的实现

C#面向对象编程基础-喜课堂笔记

注意:在前面要加using System.Xml;命名空间!

  1. XML文件读取总结:、

C#面向对象编程基础-喜课堂笔记

如何从XML文件中找到特定节点的数据?

方法一:使用遍历的方法!(缺点是:非常麻烦,必须从头开始进行查找!)

方法二·:使用查找的方法!(简单易用!)

  1. 获取XML数据版本的相关信息:

C#面向对象编程基础-喜课堂笔记

  1. 显示public
    int MyProperty { get; set; }快捷键:prop

Random类:生成随机数!

 

XML总结:

  1. 当你新建的"控制台应用程序"中 如果想要建立一个windows窗体程序,则不是单单添加 using System.Windows.Forms;
    就行!具体的是因为为什么,暂时没弄清楚!因此,当你要添加一个windows窗体应用程序,就必须在开始建立的时候就建立成为 windows窗体应用程序!
  2. String.Empty;
    表示空字符串。此字段为只读
  3. String .Fotmat(字符串);


 

C#面向对象编程基础-喜课堂笔记的更多相关文章

  1. &lbrack;Java入门笔记&rsqb; 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  2. &lpar;转&rpar;C&plus;&plus;笔记:面向对象编程基础

    非常棒的总结 http://blog.csdn.net/liufei_learning/article/details/21312701 面向对象编程基础 面向对象编程基于三个基本概念: 数据抽象-类 ...

  3. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  4. 第二章&Tab;Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  5. &lbrack;&period;net 面向对象编程基础&rsqb; &lpar;1&rpar; 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  6. &lbrack;&period;net 面向对象编程基础&rsqb; &lpar;2&rpar; 关于面向对象编程

    [.net 面向对象编程基础]  (2)  关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...

  7. &lbrack;&period;net 面向对象编程基础&rsqb; &lpar;3&rpar; 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  8. &lbrack;&period;net 面向对象编程基础&rsqb; &lpar;4&rpar; 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  9. &lbrack;&period;net 面向对象编程基础&rsqb; &lpar;5&rpar; 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

随机推荐

  1. 使用ACE遇到无法打开包括文件&colon;&ldquo&semi;inttypes&period;h&rdquo&semi;的解决方案

    本来想使用ACE_Get_Opt类来做一个命令行解析的功能,但是当项目中配置好了ACE库的路径后,编译时遇到"无法打开包括文件: inttypes.h : No such file or d ...

  2. 锁ReaderWriterLockSlim介绍

    概述 ReaderWriterLockSlim 表示用于管理资源访问的锁定状态,可实现多线程读取或进行独占式写入访问: 常用的方法: cacheLock.EnterReadLock();//加上读取锁 ...

  3. Java Hour 67 Java Collection API

    本文不是一个大而全的讲述Java Coleection 相关的APi, 而是笔者认为哪些是一个初学者所能够而且必须确切知道的知识点. Collection 一脉 这里有我们比较常用的List<E ...

  4. C&plus;&plus;输入输出

    i. C++如何输入一行,按回车键结束 #include <sstream>1 getline(cin, line); istringstream input(line); ii. C++ ...

  5. SPI通信实验---verilog&lpar;FPGA作为从机,使用可读可写&rpar;

    本实验讲究实用性,故设计思想为:主机先向从机发送地址,若是向从机写入数据,则向从机发送数据,若是读取从机数据,则向从机发送时钟,然后在时钟下降沿读取数据即可.cs信号上升沿作为SPI通信的结束信号.r ...

  6. 巩固一下C语言中的指针

    今天无意间看到一篇文章<[C语言] 浅谈指针>,对C语言指针的总结很好! 文章地址:http://blog.csdn.net/wbq1480/article/details/5150612 ...

  7. 时钟信号的占空比调整——Verilog

    时钟信号的占空比调整——Verilog `timescale 1ns / 1ps /////////////////////////////////////////////////////////// ...

  8. python os详解

    1.os.getcwd()--起始执行目录 获取当前执行程序文件所在的目录,需要注意的是,getcwd不是获取代码所在文件的目录,也不是获取执行文件所在的目录,而是起始执行目录. 目录结构: test ...

  9. python&plus;selenium&plus;chrome driver 64位环境配置

    新换了电脑,重新配置下环境,备忘下 1.python2安装 https://www.python.org/downloads/release/python-2714/ 下载64位Windows x86 ...

  10. shell中exec命令

    1.find中的-exec参数 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -ex ...