C#
 Computer >> コンピューター >  >> プログラミング >> C#

浅いコピーとは何ですか?C#のディープコピーとはどのように異なりますか?


浅いコピー

オブジェクトの浅いコピーは「メイン」オブジェクトをコピーしますが、内部オブジェクトはコピーしません。

「内部オブジェクト」は、元のオブジェクトとそのコピーの間で共有されます。

浅いコピーの問題は、2つのオブジェクトが独立していないことです。一方のオブジェクトを変更すると、その変更はもう一方のオブジェクトに反映されます。

ディープコピー

ディープコピーは、オブジェクトの完全に独立したコピーです。オブジェクトをコピーすると、オブジェクト構造全体がコピーされます。

一方のオブジェクトを変更した場合、その変更はもう一方のオブジェクトには反映されません。

class Program{
   static void Main(string[] args){
      //Shallow Copy
      ShallowCopy obj = new ShallowCopy();
      obj.a = 10;
      ShallowCopy obj1 = new ShallowCopy();
      obj1 = obj;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); // 10,10
      obj1.a = 5;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); //5,5
      //Deep Copy
      DeepCopy d = new DeepCopy();
      d.a = 10;
      DeepCopy d1 = new DeepCopy();
      d1.a = d.a;
      Console.WriteLine("{0} {1}", d1.a, d.a); // 10,10
      d1.a = 5;
      Console.WriteLine("{0} {1}", d1.a, d.a); //5,10
      Console.ReadLine();
   }
}
class ShallowCopy{
   public int a = 10;
}
class DeepCopy{
   public int a = 10;
}

出力

10 10
5 5
10 10
5 10

  1. スピア フィッシングとは何か、またそれから身を守る方法は?

    フィッシングは、攻撃者が電子メール、テキスト メッセージ、または電話を誘い、正当なエンティティになりすまして被害者に連絡する詐欺行為の一種です。被害者はメッセージに応答し、提供された指示に従います。これらの行動は自分に利益をもたらすと考えていますが、逆の結果になります。このタイプのスパムは、多くの罪のない人々に対して一度に実行され、数人が閉じ込められます。 フィッシングは釣りに似ており、漁師が水に網を投げて、数匹の魚を捕まえます。 スピア フィッシングは、特定の個人や組織を標的とするフィッシング活動の一種です。悪意のあるアクターは、ソーシャル エンジニアリング技術を使用して正当なエン

  2. スケアウェアの概要と Windows PC からの削除方法

    「スケアウェア」という言葉は、不必要なソフトウェアのダウンロードや購入を怖がらせようとする広告やメッセージを指します。これは、ユーザーにショックを与えて心配させようとする一種のソーシャル エンジニアリング手法を採用しています。 .スケアウェアが最悪の場合、個人情報の盗難やクレジット カード詐欺の危険にさらされる可能性があります。サイバー犯罪者は、身代金を支払うまでハード ドライブの内容を人質に取っておくことさえあります。 ランサムウェア この場合に使用されるプログラムの用語です。スケアウェアを使用してランサムウェアを拡散することもできますが、2 つの目的は異なります。 Scareware は