设为首页 加入收藏

TOP

C#基础笔记(第十三天)(一)
2017-10-16 18:19:47 】 浏览:5283
Tags:基础 笔记 十三

1.复习
泛型集合
List<T>
Dictionary<Tkey,Tvalue>
装箱和拆箱
装箱:把值类型转换为引用类型
拆箱:把引用类型转换为值类型
我们应该尽量避免在代码中发生装箱或者拆箱
文件流
FileStream StreamReader和StreamWriter
多态:虚方法、抽象类、接口
虚方法:
抽象类:

集合:空间名Collections.Generic
List<int> list=new List<int>();
和ArrayList集合的区别:确定了元素的类型,在使用集合的时候不会放生装箱和拆箱
Dictionary<int,string> dic=new Dictionary<int,string>(); 键值对集合
dic.Add(1,"张三"); 添加相同的键用这种方式会抛异常
dic[2]="李四" 添加相同的键用这种方式会覆盖原来键的值
辨定键值对集合用foreach循环
foreach(var item in collection)
{

}
foreach(KeyValuePair<int,string> kv in dic)
{
console.writeline("{0}------{1}",kv.key,kv.value);
}
console.readkey();

文件流
File FileStream 操作字节的 StreamReader StreamWriter 操作字符的
文本和数据最好放在相对路径下(debug内)
代码要写在using()里面,因为它的资源不会自动的释放,必须我们自己手动释放,写在using里面可以帮我们自动的回收资源。
using (FileStream fsRead = new FileStream("zucema.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//本次读取实际读取到的字节数
int r=fsRead.Read(buffer, 0, buffer.Length);
//将字节数组中的每个元素按照我们制定的编码格式解析成字符串
string s=Encoding.Default.GetString(buffer, 0, r);
Console.WriteLine(s);
}
Console.ReadKey();
如果是大数据的话,必须循环的去读

写入
using (FileStream fsWrite = new FileStream(@"C:\Users\SJD\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
string s = "ABC";
byte[] buffer = Encoding.UTF8.GetBytes(s);
fsWrite.Write(buffer, 0, buffer.Length);
}
Console.WriteLine("写入成功");
Console.ReadKey();
覆盖时是按字节去覆盖
要用追加的话,把FileMode.OpenOrCreate改成FileMode.Append就是追加了。

多态
让一个对象表现出多种状态,类型
写多态的好处
1、减少代码
2、屏蔽各个子类之间的差异,写出通用的代码,适用于每个子类的代码

虚方法和抽象类

声明父类去指定子类对象
虚方法经典例子:木鸭子会叫,橡皮鸭子会叫,真鸭子会叫,只不过他们叫的方式不一样,真鸭子是父类,有意义,需要实例化
后面用的比较多的就是抽象类

2.C#中的访问修饰符
public: 公开的公共的
private: 私有的,只能在当前类的内部访问
protected: 受保护的,只能在当前类的内部以及该类的子类中访问
internal: 只能在当前项目中访问,在同一个项目中,internal和public的权限是一样的。
同一个项目中,Internal的权限要大于protected。但是一旦跨了项目,protected的权限要大于internal
protected internal:protected+internal的权限

1)、能够修饰类的访问修饰符只有两个:public internal
默认不手动加Public修饰符的类,那它默认就是Internal修饰

2)、可访问性不一致。
子类的访问权限不能高于父类的访问权限,会暴露父类的成员。
因为继承的传递性,子类能使用父类的成员,但父类权限写低就是为了不被别的项目访问到成员。

3.设计模式
设计是这个项目的一种方式
23种设计模式
设计模式是帮我们解决在日常开发中的问题。

4.简单工厂设计模式

5.值类型和引用类型
值类型:int、double、char、decimal、bool、enum、struct 存栈
引用类型:string 、数组、自定义类、集合、object、接口 存堆

值传递和引用传递
值类型在复制的时候,传递的是这个值的本身
引用类型在复制的时候,传递的是堆这个对象的引用

6.序列化和反序列化
序列化:就是将对象转换为二进制
反序列化:就是将二进制转换为对象
作用:传输数据。
在网络中传输数据,只有二进制这个形态是可以被传输的
序列化:
1)、将这个类标记为可以被序列化的。
在类上方标记一个[Serializable],只有被它标记的对象才能序列化

例:序列化
//要将p这个对象传输给对方电脑
Person p = new Person();
p.Name = "张三";
p.Age = 19;
p.Gender = '男';
using (FileStream fsWrite = new FileStream(@"C:\Users\SJD\Desktop\p.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
//序列化对象
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWrite, p);
}
Console.WriteLine("序列化成功");
Console.ReadKey();

反序列化
//接收对方发送过来的二进制 反序列化成对象
Person p;
using (FileStream fsRead=new FileStream(@"C:\Users\SJD\Desktop\p.txt",FileMode.Open,FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
//object强制转换为person
p=(Person)bf.Deserialize(fsRead);
}
Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.WriteLine(p.Gender);
Console.ReadKey();

7.partial部分类
三个人一起同时做一个项目,每个人都要开发一个person类。不能你写我就不能写
在每个类前面加个partia

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MVC几种找不到资源的解决方式 下一篇C#方法过滤器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目