值&&引用传递&&序列化

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);
           
            }

原文地址:https://www.cnblogs.com/jefy/p/9207628.html