【C#学习记录】八、面向对象概念4(零碎概念)

C#中的访问修饰符

修饰符 作用
public 公开的公共的
private 私有的,只能在当前类的内部访问
protected 受保护的,只能在当前类的内部以及该类的子类中访问
internal 只能在当前项目中访问。在用一个项目中,internal和public的权限是一样的。
protected internal 只能在项目内部使用,只能在当前类的内部以及该类的子类中访问
  1. 能够修饰的访问修饰符只有两个:public、internal
  2. 子类的访问权限不能高于父类的访问权限,会暴露父类的成员。

设计模式

23种设计模式

23种设计模式
单例模式 抽象工厂模式 工厂方法模式 建造者模式
原型模式 适配器模式 装饰器模式 代理模式
外观模式 桥接模式 组合模式 享元模式
策略模式 模板方法模式 观察者模式 迭代器模式
责任链模式 命令模式 备忘录模式 状态模式
访问者模式 中介者模式 解释器模式

值类型和引用类型

值类型在赋值的时候,传递的是这个值本身

引用类型在复制的时候,传递的是对这个对象的引用。

特殊:字符串的不变性

ref

在传参的时候加ref,则传递的是对象的地址

序列化与反序列化

序列化:将对象转换为二进制

反序列化:将二进制转换为对象

传输数据的时候只能传输二进制,所以传输前需要序列化成二进制,接收之后反序列化回来。

  1. 首先要将对象标记为序列化类

    [Serializable]
    Class Person
    {
        public Person()
        {
    
        }
    }
    
  2. 在需要序列化的地方,使用BinaryFormatter类的Serialize方法

    Person p = new Person();
    using(FileStream fsWrite = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write))
    {
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(fsWrite,p);
    }
    
    1. 在需要反序列化的地方,使用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;
}

posted @ 2022-03-08 15:17  翻兽  阅读(44)  评论(0)    收藏  举报