【C#学习记录】八、面向对象概念4(零碎概念)
C#中的访问修饰符
| 修饰符 | 作用 |
|---|---|
| public | 公开的公共的 |
| private | 私有的,只能在当前类的内部访问 |
| protected | 受保护的,只能在当前类的内部以及该类的子类中访问 |
| internal | 只能在当前项目中访问。在用一个项目中,internal和public的权限是一样的。 |
| protected internal | 只能在项目内部使用,只能在当前类的内部以及该类的子类中访问 |
- 能够修饰类的访问修饰符只有两个:public、internal
- 子类的访问权限不能高于父类的访问权限,会暴露父类的成员。
设计模式
23种设计模式
| 23种设计模式 | |||
|---|---|---|---|
| 单例模式 | 抽象工厂模式 | 工厂方法模式 | 建造者模式 |
| 原型模式 | 适配器模式 | 装饰器模式 | 代理模式 |
| 外观模式 | 桥接模式 | 组合模式 | 享元模式 |
| 策略模式 | 模板方法模式 | 观察者模式 | 迭代器模式 |
| 责任链模式 | 命令模式 | 备忘录模式 | 状态模式 |
| 访问者模式 | 中介者模式 | 解释器模式 |
值类型和引用类型
值类型在赋值的时候,传递的是这个值本身
引用类型在复制的时候,传递的是对这个对象的引用。
特殊:字符串的不变性
ref
在传参的时候加ref,则传递的是对象的地址
序列化与反序列化
序列化:将对象转换为二进制
反序列化:将二进制转换为对象
传输数据的时候只能传输二进制,所以传输前需要序列化成二进制,接收之后反序列化回来。
首先要将对象标记为序列化类
[Serializable] Class Person { public Person() { } }在需要序列化的地方,使用BinaryFormatter类的Serialize方法
Person p = new Person(); using(FileStream fsWrite = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write)) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fsWrite,p); }
- 在需要反序列化的地方,使用BinaryFormatter类的DeSerialize方法
using (FileStream fsRead = new FileStream(path,FileMode.OpenOrCreate ,FileAccess.Read)) { BinaryFormatter bf = new BinaryFormatter(); pp = (Person)bf.Deserialize(fsRead); } Console.WriteLine(pp.Age); Console.WriteLine(pp.Name );
部分类
partial关键词
密封类
sealed关键词
密封类不能够被继承的,但是可以继承于别人
重写类的ToString方法
ToString()方法是object类内的方法,虚方法
普通属性和自动属性
自动属性也会自己生成一个字段,但是自动属性不允许有方法体,对值的限制在构造函数里面写
GUID
产生一个全球唯一的编号
Guid.NewGuid().ToString();
MD5加密
涉及到密码的都必须要MD5加密
using System.Security.Cryptography;
using System.Text;
string s = GetMD5("123");
Console.WriteLine(s);
Console.ReadKey();
static string GetMD5(string str)
{
MD5 md5 = MD5.Create();
//开始加密
//需要将字符串转换为字符数组
byte[] buffer = Encoding.Default.GetBytes(str);
//返回一个加密好的字节数组
byte[] MD5Buffer = md5.ComputeHash(buffer);
//将字节数组转换为字符串
//return Encoding.Default.GetString(MD5Buffer);
string strMD5 = "";
for (int i = 0; i < MD5Buffer.Length; i++)
{
strMD5 += MD5Buffer[i].ToString("X2").ToLower();
}
return strMD5;
}
本文来自博客园,作者:翻兽,转载请注明原文链接:https://www.cnblogs.com/xuzhq/p/15980606.html

浙公网安备 33010602011771号