程序如下:class T
{
public int i;
public object GetCopy()
{
return MemberwiseClone();
}
}
class Test
{
static void Main()
{
T obj = new T();
obj.i = 2;
T obj2 = (T)obj.GetCopy();
obj2.i = 4;
Console.WriteLine("{0},{1}",obj.i, obj2.i); }
}为什么 obj.i与obj2.i的值不同的呢?引用的不是同一对象吗?为什么会这样?
{
public int i;
public object GetCopy()
{
return MemberwiseClone();
}
}
class Test
{
static void Main()
{
T obj = new T();
obj.i = 2;
T obj2 = (T)obj.GetCopy();
obj2.i = 4;
Console.WriteLine("{0},{1}",obj.i, obj2.i); }
}为什么 obj.i与obj2.i的值不同的呢?引用的不是同一对象吗?为什么会这样?
解决方案 »
- C++代码转C#,转换与传递参数,共享内存,不知道如何写
- 高手速来,这算不算是C#的BUG
- 时间格式问题
- 请问窗体之间如何传递变量啊
- 求救,页面使用了dojo,但有dojo参数设置的element却不能使用getAttribute了
- 关于界面中传值的问题
- WCF 用户名密码验证一定需要证书吗?
- DataGridView设置默认值的问题
- 使用FSO如何得到一个文件夹下的所有文件和子文件夹?
- 有没有C#版本的Guava Cache组件
- Lucene.Net抛出找不到异常,can not find file segments,请问什么原因
- “WindowsApplication1.Class1”的类型初始值设定项引发异常。(帮帮忙,100分求这个问题的解决方案)
{
public int i;
public object GetCopy()
{
return this;
}
}
class Test
{
static void Main()
{
T obj = new T();
obj.i = 2;
T obj2 = (T)obj.GetCopy();
obj2.i = 4;
Console.WriteLine("{0},{1}", obj.i, obj2.i); }
}这样才是浅复制
public class Content
{
public int Val;
}
public class Cloner
{
public Content MyContent = new Content();
public Cloner(int newVal)
{
MyContent.Val = newVal;
}
public object GetCopy()
{
return MemberwiseClone();
}
static void Main()
{
Cloner mySource = new Cloner(5);
Cloner myTarget = (Cloner)mySource.GetCopy();
Console.WriteLine("myTarget.mycontent.val={0}", myTarget.MyContent.Val);
mySource.MyContent.Val = 2;
Console.WriteLine("{0},{1}", myTarget.MyContent.Val, mySource.MyContent.Val);
}
}这里也是用的整型,怎么就可以呢?
{
public int Val;
}然后在Cloner里是Content MyContent = new Content();的,这样就不是数值类型了。
如果我用string类型代替int
string是引用类型,那它经过浅复制会得出相同的数据吗?