学习C#的一点一滴(34)

    科技2022-08-27  106

    序列化和反序列化

    Person p = new Person(); p.Name = "张三"; p.Gender = '男'; p.Age = 22; using (FileStream fwrite = new FileStream(@"C:\Users\ASUS\Desktop\112.txt", FileMode.OpenOrCreate, FileAccess.Write)) { //开始序列化对象 BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fwrite, p);//序列化转换成二进制 } Console.WriteLine("序列化成功"); Console.ReadKey(); 接受对方发过来的二进制代码 然后反序列化成为对象 Person p; using (FileStream fsread = new FileStream(@"C:\Users\ASUS\Desktop\112.txt", FileMode.OpenOrCreate, FileAccess.Read)) { BinaryFormatter bf = new BinaryFormatter(); p = (Person)bf.Deserialize(fsread);//反序列化成对象 } Console.WriteLine(p.Name); Console.WriteLine(p.Gender); Console.WriteLine(p.Age); Console.ReadKey(); 序列化和反序列化的作用就是传输数据 [Serializable]//指示一个类可以被序列化 public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } private char _gender; public char Gender { get { return _gender; } set { _gender = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } }

    接口

    //接口就是一个规范,能力 //接口不能被实例化 //student s = new student();//子类可以用父类里面的方法 //s.CHLSS(); //Console.ReadKey(); person p = new student(); p.CHLSS();//父类不能用子类里面的方法 也就是不能用扣篮 Ikoulanable kou = new student();//父类new出来子类 kou.koulan(); Ikoulanable k = new Nba(); k.koulan();//接口里面的方法 要和子类里面的方法 相同 子类里面必须要和接口里面的方法名字一样 比如说koulan public class person { public void CHLSS() { Console.WriteLine("吃屎吧你"); } } public class Nba : Ikoulanable { public void koulan() { Console.WriteLine("扣篮"); } } public class student : person, Ikoulanable//接口是干爹 { //一个类继承一个接口必须实现这个接口中的成员 public void koulan() { Console.WriteLine("我也可以扣篮"); } } public interface Ikoulanable { //接口中不允许添加修饰符 默认就是public //不允许写有方法体的函数 //接口中不能包含字段 //允许方法和自动属性 void koulan(); }

    接口的练级

    //麻雀会飞 鹦鹉会飞 鸵鸟不会飞 企鹅不会飞 直升机会飞 //用多态来实现 //虚方法、抽象类、接口 IFlyable Fly = new yingwu();//new zhishengfeiji();//new Maque(); Fly.Fly(); ISpeakable Speak = new yingwu(); Speak.Speak(); bird B = new yingwu(); B.CHIHELAS(); Console.ReadKey(); //public class bird //{ // public double wings // { // get; // set; // } // public void CHIHELAS() // { // Console.WriteLine("吃喝拉瑟"); // } //} //public class Maque : bird, IFlyable //{ // public void Fly() // { // Console.WriteLine("麻雀会飞"); // } //} //public class yingwu : bird, IFlyable, ISpeakable //{ // public void Fly() // { // Console.WriteLine("鹦鹉会飞"); // } // public void Speak() // { // Console.WriteLine("鹦鹉会学人说话"); // } //} //public class tuoniao : bird //{ //} //public class qie : bird //{ //} //public class zhishengfeiji : IFlyable //{ // public void Fly() // { // Console.WriteLine("直升机会飞"); // } //} //public interface IFlyable //{ // void Fly(); //} //public interface ISpeakable //{ // void Speak(); //}

    显示实现接口

    //接口中的 方法 有时候会和 类中的方法重名 //为了解决调用的不知道是类里面的还是接口里面的方法这个问题 采取以下操作 IFlyable Fly = new Bird(); Fly.Fly(); Bird F = new Bird(); F.Fly(); Console.ReadKey(); public class Bird : IFlyable { public void Fly() { Console.WriteLine("鸟会飞"); } /// <summary> /// 显示实现接口 /// </summary> void IFlyable.Fly() { Console.WriteLine("接口会飞"); } } public interface IFlyable { void Fly(); }
    Processed: 0.013, SQL: 9