How would one do a deep copy in .NET?
Answers were Sorted based on User's Feedback
Answer / bhagyesh
class A
{
public A()
{
};
public int i;
}
class TestPerson
{
static void Main()
{
A a = new A();
A b;
a.i =5;
b=a; // not a deep copy
b.i = a.i+6;
}
}
here a.i=11 and b.i = 11 because a and b both refer same
instance of object
Deep copy would be implemented in c# using copy construction
class A
{
public A()
{
};
public A(A previouscopy)
{
i = previouscopy.i;
};
public int i;
}
class TestPerson
{
static void Main()
{
A a = new A();
a.i =5;
// Create another new object, copying a.
A b = new A(a); // Deep copy using copy constructor
b.i = a.i+6;
}
}
here a.i=5 and b.i = 11 because a and b both refer it's own
instance of object
Is This Answer Correct ? | 12 Yes | 3 No |
Answer / rad
public static T DeepCopy<T>(T obj)
{
object result = null;
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
result = (T)formatter.Deserialize(ms);
ms.Close();
}
return (T)result;
}
Is This Answer Correct ? | 7 Yes | 2 No |
Answer / pramod nikumbh
In C# if u want to deep allocation, u can used
serialization that is use ISerializable
for shallow copy u can use cloning, that is use Iclonable
interface
Is This Answer Correct ? | 8 Yes | 4 No |
Answer / mario j vargas
You can perform a deep copy in C# by implementing the
ICloneable interface and manually assigning the values of
each member field in the current instance to the new
instance being returned. It is important to mention in the
implementation's documentation whether or not the copy is a
shallow or deep copy.
Bhagyesh suggested using a copy constructor. This is
something I had never seen in C#, only in C++, but the idea
sounded very compelling and I think this could be another
way to achieve a deep copy. You should check out the article
"How to: Write a Copy Constructor (C# Programming Guide)" in
the MSDN documentation.
Is This Answer Correct ? | 4 Yes | 0 No |
I Agree clone() always gives deep copy.
Now I am just diverting from the tpoic. one of the question
asked during interview is : what is the difference b/w
Array.copy() and array.clone(). for me both gives deep copy
the only difference is array.clone() returns a object type
so you have to typecast it.
Please comment.............
Is This Answer Correct ? | 2 Yes | 3 No |
Answer / kavita
Two or more pointers have their own Data.
class A
{
string c;
}
A a;
B b;
a=b;//deep copy
Is This Answer Correct ? | 6 Yes | 42 No |
What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design?
What is http only cookie?
What are Master pages? How to define a Master page?
What is a server cookie?
What is the difference between dynamic SGA and static SGA?
You are planning the deployment of an ASP.NET application. The application uses a Visual Studio .NET component named DataAccess that will be shared with other applications on your Web server. You are using Visual Studio .NET to create a Windows Installer package. You need to deploy DataAccess and the ASP.NET application so that they can be uninstalled later of necessary. What should you do? A . Create a setup project for DataAccess. Add the ASP.NET application in a custom action. B . Create a setup project for the ASP.NET application. Create another setup project for DataAccess. C . Create a Web setup project for the ASP.NET application. Add a project output for DataAccess. D . Create a Web setup project for the ASP.NET application. Add a merge module for DataAccess.
What are the asp.net server side objects?
How to do Forms authentication in asp.net?
Explain what are delegates?
What are the differences between code behind and code inline?
I am trying to implement sorting facility from client side code in GridView Control. So how can I fill up an Array inside client side code (using JavaScript), i want to assign my DataSet object declared and filled up on Server side(in code behind) to the array (on client side)
What is intrinsic objects in asp.net?