C#中对象创建方式.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#中对象创建的方式 使用new 创建 使用对象的MemberwiseClone MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace CloneDemo { [Serializable] class DemoClass { public int i = 0; public int[] iArr = { 1, 2, 3 }; public DemoClass Clone1() { return this.MemberwiseClone() as DemoClass; } public DemoClass Clone2() { MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, this); stream.Position = 0; return formatter.Deserialize(stream) as DemoClass; } } class Program { static void Main(string[] args) { DemoClass a = new DemoClass(); a.i = 10; a.iArr = new int[] { 8, 9, 10 }; DemoClass b = a.Clone1(); DemoClass c = a.Clone2(); // 更改 a 对象的iArr[0], 导致 b 对象的iArr[0] 也发生了变化 a.iArr[0] = 88; Console.WriteLine(MemberwiseClone); Console.WriteLine(b.i); foreach (var item in b.iArr) { Console.WriteLine(item); } Console.WriteLine(Clone2); Console.WriteLine(c.i); foreach (var item in c.iArr) { Console.WriteLine(item); } Console.ReadLine(); } } } 使用工厂方法创建 ??? 定义创建对象的接口,并由派生类决定那一个类来创建实例。即工厂方法将创建对象的责任委托(延迟)到了派生类创建。适用情况: 1.当一个类无法事先知道她所必须创建的对象的类的时候。 2.当一个类要让其派生类决定构建对象时。 3.当类将创建对象的职责委托给多个协助他的派生类之一,同时你希望通过所委托的派生类来集中管理对象创建逻辑时。 ?使用序列化和反序列化创建 MyObject?obj?=?new?MyObject();? obj.n1?=?1;? obj.n2?=?24;? obj.str?=?一些字符串;? IFormatter?formatter?=?new?BinaryFormatter();? Stream?stream?=?new?FileStream(MyFile.bin,?FileMode.Create,? FileAccess.Write,?FileS

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档