关于C#数组的问题!

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:43:14
int[] int_Test1=new int[2];
int_Test1[0]=0;
int_Test1[1]=1;
int[] int_Test2=int_Test1;
以上是基本条件,不能修改。
然后我修改int_Test1的值,int_Test1[0]=3;
我如何才能使int_Test2[0]的值仍然为0,而不跟随int_Test1[0]的变化而变化?
PS:我知道数组之间的赋值传递的是引用,现在我复制了一个数组,并且修改了原来数组的值,再要断定被复制的数组跟原来数组是不一样的,想了一天了,没解决,请高手支招啊。
1楼兄弟的办法可行,呵呵。
2楼兄弟让我长见识了,很早我就测试过C# unsafe指针,不过没你写的那么详细,所以对unsafe指针还比较陌生。还有就是,这两个数组,我是拿来举例子的,实际上我代码中的数组,长度和值都不是固定的。谢谢二楼的指点,辛苦了。。。。
感谢各位朋友对本问题的关注,呵呵。另外回复spearrain:你这个办法是比较简单啊,不过你修改了我的条件啊,呵呵。
再回复spearrain:那我就采用1楼的了,再次感谢你们的关注。。。。

用copyTo方法,这样就不是引用赋值了。
int[] int_test1 = new int[2];
int_test1[0] = 0;
int_test1[1] = 1;
int[] int_test2 = (int[])int_test1.Clone();
int_test1.CopyTo(int_test2, 0);
int_test1[0] = 3;

可行的方法要采纳啊......................................
其实我个人觉得使用
int[] test2 = new int[test1.Length];
for( int i = 0; i < test1.Length; i++ )
test2[i]=test1[i];
应该是个简单的方法 >_<

所以说你要采纳答案啊.........................................................................

// 数组复制:
int[] int_Test1 = new int[2];
int_Test1[0] = 0;
int_Test1[1] = 1;
int[] int_Test2 = int_Test1.Clone(); // 按照 .NET 的说法,是创建 System.Array 的浅表副本。

// 取各自数组地址(使用 unsafe 块)
fixed (int* p1 = &(int_Test1[0]), p2 = &(int_Test1[0]), p3 = &(int_Test2[0]))
{
Console.WriteLine((int)p1);
Console.WriteLine((int)p2);
Console.WriteLine((int)p3);
}

// 取各自数组的地址(使用 GCHandle)
GCHandle po