プロトタイプパターンの定義:
プロトタイプインスタンスを使用して、作成するオブジェクトのタイプを指定し、これらのプロトタイプをコピーして新しいオブジェクトを作成します。
プロトタイプ モードの構造図:
作成モードの特別なモード - プロトタイプ モードの最大の機能の 1 つは、既存のオブジェクトのクローンを作成することです。1 つは浅い度数のコピーです。もう一つはディープコピーです。
クリエイティブ モードは通常、新しいオブジェクトを作成するために使用され、その後、このオブジェクトを使用していくつかのオブジェクト操作を完了します。オブジェクトの作成を迅速に完了するための特別な new() 操作を提供しなくても、プロトタイプ モードを通じてオブジェクトを迅速に作成できます。新しいオブジェクトを素早く作成するための非常に効果的な方法であることは間違いありません。
1. プロトタイプ モード: 浅いコピー
すべてのカラー オブジェクト インターフェイスを表現するインターフェイスを定義します
/// <summary> /// 颜色接口 /// </summary> public interface IColor { IColor Clone(); int Red { get; set; } int Green { get; set; } int Blue { get; set; } }
red の特定の実装コードを指定します:
public class RedColor:IColor { public int Red { get; set; } public int Green { get; set; } public int Blue { get; set; } public IColor Clone() { return (IColor)this.MemberwiseClone(); } }
具体的なテスト コードは次のとおりです:
static void Main(string[] args) { IColor color = new RedColor(); color.Red = 255; Console.WriteLine("color -red " + color.Red); //225 IColor color1 = color.Clone(); color1.Red = 224; Console.WriteLine("color1-red " + color1.Red);//224 Console.WriteLine("color -red " + color.Red); //225 }
color1 オブジェクトの Red 属性値を変更しても、color 属性には影響がないことがわかります。つまり、オブジェクトのコピーの変更は、オブジェクトの状態に影響を与えません。オブジェクトそのもの。
2. プロトタイプ モード: ディープ コピー
ディープ コピーで考慮される状況は、オブジェクト間に継承または参照関係がある可能性があるため、比較的複雑であり、一般的に、ディープ コピーでは次のことが可能です。一方では単純なディープコピースキームであり、他方ではオブジェクトをシリアル化の形式でコピーすることもできます。プロトタイプ モードは、以下のシリアル化の形式で実装されます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 { /// <summary> /// 颜色接口 /// </summary> public interface IColor { IColorDemo Clone(); int Red { get; set; } int Green { get; set; } int Blue { get; set; } Factroy f{get;set;} } /// <summary> /// 生产颜色的工厂信息 /// </summary> [Serializable] public class Factroy { public string name { get; set; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 { /// <summary> /// 颜色 /// </summary> [Serializable] public class RedColor:IColor { public int Red { get; set; } public int Green { get; set; } public int Blue { get; set; } public Factroy f { get; set; } public IColor Clone() { SerializableHelper s = new SerializableHelper(); string target = s.Serializable(this); return s.Derializable<IColor>(target); } } }
シリアル化ヘルパー クラス:
/// <summary> /// 序列化和反序列化辅助类 /// </summary> public class SerializableHelper { public string Serializable(object target) { using (MemoryStream stream = new MemoryStream()) { new BinaryFormatter().Serialize(stream, target); return Convert.ToBase64String(stream.ToArray()); } } public object Derializable(string target) { byte[] targetArray = Convert.FromBase64String(target); using (MemoryStream stream = new MemoryStream(targetArray)) { return new BinaryFormatter().Deserialize(stream); } } public T Derializable<T>(string target) { return (T)Derializable(target); } }
テスト:
static void Main(string[] args) { IColor color = new RedColor(); color.Red = 255; color.f = new Factroy() { name="湖北工厂" }; Console.WriteLine("color - Factroy:" + color.f.name); //湖北工厂 IColor color1 = color.Clone(); color1.Red = 234; color1.f.name = "北京工厂"; Console.WriteLine("color1- Factroy:" + color1.f.name); //北京工厂 Console.WriteLine("color - Factroy:" + color.f.name); //湖北工厂 Console.Read(); }
プログラムの実行結果は次のとおりです。
結論: 新しいオブジェクトはシリアル化と逆シリアル化を通じて形成されます。実際、プロジェクト内のオブジェクトのコピーにプロトタイプ モードが使用されている限り、シリアル化の形式でディープ コピーを実行できます。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、PHP 中国語 Web サイトにもアクセスしてください。

C#.NET開発を開始するには、次のことが必要です。1。C#の基本的な知識と.NETフレームワークのコア概念を理解する。 2。変数、データ型、制御構造、関数、クラスの基本概念をマスターします。 3。LINQや非同期プログラミングなど、C#の高度な機能を学習します。 4.一般的なエラーのためのデバッグテクニックとパフォーマンス最適化方法に精通してください。これらの手順を使用すると、C#.NETの世界に徐々に浸透し、効率的なアプリケーションを書き込むことができます。

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール
