大虾,这种问题有没有办法解决

wbcnxa 2003-08-22 04:50:11
有个类OneClass,他有个方法Copy(OneClass obj),现有有个类OneClass,他有个方法Copy,现有A的实例的实例 A, B,

可否通过方法Copy,将A, B复制成相同的对象(不是指向同一个对象,而是两个对象完全相同)。

不要告诉我逐个复制字段和属性,比如:
A.Field1 = b.Field1,
A.Field2 = B.Field2
或者A = B之类
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wbcnxa 2003-08-24
  • 打赏
  • 举报
回复
Clone是从外部复制一个对象。我想从一个对象内部将通过类似复制的办法转自己复制成与传递给自己的另一个同类型对象一样。

比如:
public class Test
{
public string field1;
private string field2;

public void Copy(Test obj)
{
// 不是field1 = obj.field1;
复制(obj)
}
}

public class Run
{
public static void Main()
{

Test a, b;
a.field1 = "OK";
b.Copy(a);
}
}

看起来这样做似乎很蹩脚,没必要,但是我很想知道有没有方法可以如此实现。
_weiKun_ 2003-08-22
  • 打赏
  • 举报
回复
clone好像不是深拷贝呀
雪狼1234567 2003-08-22
  • 打赏
  • 举报
回复
something like:

public class A : ICloneable
{
int m_i;
string m_s;

public A() {}
public A(int i,string s)
{
m_i = i;
m_s = s;
}

public Object Clone()
{
A a = new A();
a.m_i = this.m_i;
a.m_s = this.m_s.Clone();
return a;
}
}
雪狼1234567 2003-08-22
  • 打赏
  • 举报
回复
clone方法,
dahuzizyd 2003-08-22
  • 打赏
  • 举报
回复
class A
{
public int i = 10;
public string j = "12345";
public A Copy(A a)
{
a.i = 20;
a.j = "54321";
return a;
}
}
class AAAA
{
static void Main(string[] args)
{
A a = new A();
A b = new A();
b = b.Copy(a);
Console.WriteLine(b.Equals(a));
Console.WriteLine(b.i);
Console.WriteLine(b.j);

Console.ReadLine();
}
}
程序看起来怪怪的,不知是不是你要的效果。
jjcccc 2003-08-22
  • 打赏
  • 举报
回复
用Clone方法,如Object.MemberwiseClone();此为创建当前 Object 的浅表副本。如果浅表副本不合适,则派生类应实现 ICloneable 接口。MemberwiseClone 是受保护的,因此只能通过此类或派生类访问它。


copy vs.net help sample:
//==================================

using System;

class MyBaseClass {
public static string CompanyName = "My Company";
public int age;
public string name;
}

class MyDerivedClass: MyBaseClass {

static void Main() {

// Creates an instance of MyDerivedClass and assign values to its fields.
MyDerivedClass m1 = new MyDerivedClass();
m1.age = 42;
m1.name = "Sam";

// Performs a shallow copy of m1 and assign it to m2.
MyDerivedClass m2 = (MyDerivedClass) m1.MemberwiseClone();
}
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧