Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Shallow copy in C#

Una din metodele pentru copierea unui obiect o reprezinta shallow copy. Ea consta in crearea unui nou obiect si copierea membrilor, care nu sunt statici, ale obiectului curent catre un nou obiect.
Clasa Object contine o metoda de tip protected numita MemberwiseClone.
In cazul in care campurile sunt de tip valoare, copierea are loc bit cu bit, acesta fiind cel mai fericit caz. In cazul in care campurile sunt de tip referinta, referinta este copiata, dar obiectul referentiat, nu. Exemplu:

using System;

namespace MemberWiseExample
{
    /// <summary>
    /// Clasa Student
    /// </summary>
    class Student
    {
        public string Name { get; set; }

        public Info Info { get; set; }

        public Student ShallowCopy()
        {
            return (Student)this.MemberwiseClone();
        }
    }

    /// <summary>
    /// Clasa Info
    /// </summary>
    class Info
    {
        public int Id { get; set; }

        public Info(int id)
        {
            Id = id;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //se creeaza un obiect de tip Student
            Student s = new Student ();
            s.Name = "Marius";
            s.Info = new Info(1);
           
            //se creeaza un obiect de tip student prin copia primului obiect
            Student s2 = s.ShallowCopy();
           
            //Marius
            Console.WriteLine(s2.Name);
            //1
            Console.WriteLine(s2.Info.Id);

            s.Name = "Bogdan";

            //Bogdan
            Console.WriteLine(s.Name);
            //Marius
            Console.WriteLine(s2.Name);

            s.Info.Id = 34;
            
            //34
            Console.WriteLine(s.Info.Id);
            //34
            Console.WriteLine(s2.Info.Id);

            Console.ReadLine();
        }
    }
}

Shallow copy mai este denumita si memberwise copy. Se recomanda pentru cresterea performantei si in conditiile in care obiectul nu are membri care se modifice frecvent.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*