|
|
1
2
msdn article 关于分歧。 一个更具描述性的答案是,两者实际上都在执行相同的操作,区别在于在第一个示例(两个整数)中,mVar2=mVar1的赋值是将mVar1的值赋值给mVar2,即1。但是,对于DataTable,实际分配的是内存位置,而不是DataTable。 例如,假设您创建的数据表驻留在内存位置20中。这将意味着参考mVar1将持有对该位置的参考(20)。当您执行赋值mVar2=mVar1时,您告诉mVar2保持与mVar1相同的值,因此mVar2也会引用内存位置20。结果是两个变量引用相同的数据表。
对于DataTable类,可以在扩展方法中对其进行如下扩展:
|
|
|
2
0
调用mVar2=mVar1;复制存储在mVar1位置的值。在这种情况下,这意味着1被复制到位置mVar2中。在第二种情况下,存储在mVar3的值再次复制到mVar4的位置。但是,在这种情况下,因为DataTable是引用类型,所以复制的值是对实际DataTable对象的引用。 要进一步显示这一点,请在您发布的代码末尾添加以下内容:
这里,如果再次将mVar4设置为DataTable的新实例,则所做的更改不会反映在mVar3中。这是因为调用mVar4=newdatatable();更改mVar4位置处的引用,但不会更改mVar4引用的对象。 |