public class Room
{
public int _maxSeat;
public Room(int maxSeat)
{
this._maxSeat = maxSeat;
}
}
public struct Film
{
public string _name;
public Film(string name)
{
this._name = name;
}
}
public class Cinema
{
public Room _room;
public Film _film;
public Cinema(Room room, Film film)
{
this._room = room;
this._film = film;
}
public object Clone()
{
return MemberwiseClone(); //对引用类型实施浅复制
}
}
static void Main(string[] args)
{
Room room1 = new Room(60);
Film film1 = new Film("家园防线");
Cinema cinema1 = new Cinema(room1, film1);
Cinema cinema2 = (Cinema)cinema1.Clone();
Console.WriteLine("拷贝之前,结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema1._film._name,cinema1._room._maxSeat);
Console.WriteLine("拷贝之后,新的结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema2._film._name, cinema2._room._maxSeat);
//修改拷贝之前引用类型的字段值
cinema1._film._name = "极品飞车";
cinema1._room._maxSeat = 80;
Console.WriteLine("修改之后,结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema1._film._name, cinema1._room._maxSeat);
Console.WriteLine("修改之后,新的结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema2._film._name, cinema2._room._maxSeat);
Console.ReadKey();
}
public object Clone()
{
Room room = new Room();
room._maxSeat = this._room._maxSeat;//复制当前引用类型成员的值到新对象
Film film = this._film; //值类型直接赋值
Cinema cinema = new Cinema(room, film);
return cinema;
}
public object Clone1()
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, this); //复制到流中
ms.Position = 0;
return (bf.Deserialize(ms));
}
[Serializable]
public class Room
{
public int _maxSeat;
public Room()
{}
public Room(int maxSeat)
{
this._maxSeat = maxSeat;
}
}
[Serializable]
public struct Film
{
public string _name;
public Film(string name)
{
this._name = name;
}
}
[Serializable]
public class Cinema
{
public Room _room;
public Film _film;
public Cinema(Room room, Film film)
{
this._room = room;
this._film = film;
}
//浅拷贝
//public object Clone()
//{
// return MemberwiseClone(); //对引用类型实施浅复制
//}
//深拷贝 对每个对象成员进行复制
public object Clone()
{
Room room = new Room();
room._maxSeat = this._room._maxSeat;//复制当前引用类型成员的值到新对象
Film film = this._film; //值类型直接赋值
Cinema cinema = new Cinema(room, film);
return cinema;
}
//使用序列化和反序列化进行复制
public object Clone1()
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, this); //复制到流中
ms.Position = 0;
return (bf.Deserialize(ms));
}
}
static void Main(string[] args)
{
Room room1 = new Room(60);
Film film1 = new Film("家园防线");
Cinema cinema1 = new Cinema(room1, film1);
Cinema cinema2 = (Cinema)cinema1.Clone1();
Console.WriteLine("拷贝之前,结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema1._film._name,cinema1._room._maxSeat);
Console.WriteLine("拷贝之后,新的结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema2._film._name, cinema2._room._maxSeat);
//修改拷贝之前引用类型的字段值
cinema1._film._name = "极品飞车";
cinema1._room._maxSeat = 80;
Console.WriteLine("修改之后,结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema1._film._name, cinema1._room._maxSeat);
Console.WriteLine("修改之后,新的结构成员的字段值为{0},引用类型成员的字段值为{1}", cinema2._film._name, cinema2._room._maxSeat);
Console.ReadKey();
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有