zoukankan      html  css  js  c++  java
  • 值&&引用传递&&序列化

    1.值类型复制时,传递的是值的本身。
    2.引用类型在复制是,传递的是值的引用。(引用就是指地址)
    注意:string s1 = "张三"; 
     string s2 = s1;
      s2 = "李四";
    结果:s1是"张三";s2是"李四"。原因是:string类型的不可变性。每次重新赋值都会重新开辟一块内存空间。

      person p1 = new person();//创建类对象
     p1.name = "张三";
     person p2 = new person();
     p2= p1;
     p2.name = "李四";(p1 ,p2都为“李四”;因为是引用类型)

    3.ref修饰的参数,实现将值类型转变成引用类型。
    int a = 10;
    void get(ref int b);
    get(a);//调用     a  b 保存在栈上不同地址,ref修饰将a的地址拷贝给b,实现引用传递。
    若没有ref修饰,a->b是值传递。只能将a的值传递个b。

    4.序列化和反序列化
    序列化:就是将对象转换成二进制
    反序列化:就是将二进制转换成对象。
    作用:传输数据(在传输数据过程中,需要将数据序列化,传输完成后,要反序列换将二进制码转换成数据)

    序列化步骤:
    1)[Serializable]修饰要序列化的类。
    person p = new person("jefy" , 25 , '男');
              
     using (FileStream fsWrite = new FileStream("third day.txt" ,FileMode.Append , FileAccess.Write))
                {
                //开始序列化
                    //创建序列化对象
                 BinaryFormatter bf = new BinaryFormatter();
                    //序列化,并把数据写入fsWrite中
                    bf.Serialize(fsWrite , p);
                }
                person p1 = null;
                using (FileStream fsRead = new FileStream("third day.txt" , FileMode.OpenOrCreate , FileAccess.Read))
                {
                  //开始反序列化
                    BinaryFormatter bfm = new BinaryFormatter();
                   p1=(person) bfm.Deserialize(fsRead);
               
                }

  • 相关阅读:
    mysql 基础sql语句
    mysql存储引擎概述
    docker命令总结
    python链接postgresql
    Log4.net示例
    postgresql 使用游标笔记
    npm常用命令
    Nginx命令
    Ubuntu命令总结
    NHibernate总结
  • 原文地址:https://www.cnblogs.com/jefy/p/9207628.html
Copyright © 2011-2022 走看看