值传递和引用传递,ref的作用,序列化和反序列化
来源:互联网 发布:常用推荐算法 编辑:程序博客网 时间:2024/06/06 03:13
值类型:int double char decimal bool enum struct --->存储在栈中
(值类型在复制的时候传递的是这个值得本身)
字符串string 有不可变性,每次变化都在内存中开辟一个新的空间。
static void Main(string[] args)
{
string s1 = "张三";
string s2 = s1;
s2 = "李四";
Console.WriteLine(s1);
Console.WriteLine(s2);
Console.ReadKey();
}
引用类型:string 数组 自定义类 集合object 接口--->存储在堆中
(引用类型在复制的时候,传递的是对这个对象的引用)
ref:能够把一个变量以参数的形式带到一个方法中进行改变,再将改变的值返回
class Program
{
static void Main(string[] args)
{
int n = 10;
Test(ref n);
Console.WriteLine(n);
Console.ReadKey();
}
public static void Test(ref int number)
{
number += 10;
}
}
方法中本来是没有返回值的,加了ref后number和n变成同一块内存空间(值传递改变为引用传递)
序列化:就是将对象转换为二进制
反序列化:就是将二进制转换为对象
作用:传输数据。
序列化步骤
1)、将这个类标记为可以被序列化的。在类的前面加上 [Serializable] --->指示一个类可以被序列化
例:将一个对象传递给对方的电脑(序列化) 对方电脑读取传递过来的对象(反序列化)
第一步:写一个类 在类的前面加上 [Serializable] 表示可以被序列化
//先写一个类,在类的前面加上一个 [Serializable]
[Serializable]
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
}
第二步:创建对象,序列化对象
static void Main(string[] args)
{
Person p = new Person();
p.Age = 20;
p.Name = "张三";
p.Gender = '男';
using (FileStream fsWrite = new FileStream(@"C:\Users\pzy\Desktop\123.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWrite, p);//序列化对象P 并写入 123.txt 文档中
}
Console.WriteLine("OK了");
Console.ReadKey();
}
第三步:将123.txt 中的内容进行反序列化,还原对象 p
static void Main(string[] args)
{
Person p;
using (FileStream fsRead = new FileStream(@"C:\Users\pzy\Desktop\123.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
p=(Person)bf.Deserialize(fsRead);
}
Console.WriteLine(p.Age);
Console.WriteLine(p.Name);
Console.WriteLine(p.Gender);
Console.ReadKey();
}
- 值传递和引用传递,ref的作用,序列化和反序列化
- ref的作用 引用和值传递
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- 序列化和反序列化的作用
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- Java序列化的作用和反序列化
- Java序列化的作用和反序列化
- Java序列化的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- 文章标题
- 打造自己的MVC 4-3 4-4
- 如何解决“access violation at address”错误
- 2016年10月5日
- 字符串反转
- 值传递和引用传递,ref的作用,序列化和反序列化
- 【JZOJ 4810】【NOIP2016提高组 五校联考1】道路规划
- [李景山php]每天TP5-20161204|Loader.php-2
- Git上传代码到github
- C语言笔记(《C与指针》)
- Android使用post方式上传图片到服务器的方法
- Android基础之内存溢出
- 迷宫问题
- windows7下的PHP+apache+mysql+eclipse for php 开发环境搭建