一个二维数组或二维交错数组,能否当一维数组来用?或者有什么系统函数可将其中某一行的值转到一个一维数组上?难道我就得用循环来一个值一个值将其复制到一维数组中?以前有个旧贴子和我问题差不多:c#中二维数组能当一维数组使用吗?例如,我有一个函数的形式参数是一维数组,但我定义的变量是二维的,如果不用临时的变量转换,能直接使用二维的吗?   
    
  例如:   
  int[,]   bb   =new   int[3,4];   
  public   void   fun(int[]   aa)   
  {   
        //do   something....   
  }   
    
  在c++builder中,可以使用   
  fun(bb[1]);   
    
  在c#中怎么使用呢?   
    

解决方案 »

  1.   

    二维交错数组: 不能,数据分布并不连续。
    二维数组:或许可以(unsafe下)。C#有责任对托管内存进行管理,因此C#的内存布局因该是对用户不透明的,大部分情况下我们不要,也不需要直接去操作内存。
    如果你问这个问题是为了将一些对象,或对象数组,状态保存到永久媒体上,你倒是可以介绍你的用意。我猜C#下也有很丰富的工具,也有可能给出更有效率的解决方案。
      

  2.   

    char[]c=new char[512];
    char[,]c2=new char[64,512];现将c2第8行数据复制给c:
    for ( int i = 0; i < 512;++i )
    { c[i] = c2[8, i]; }感觉这个循环笨了点,有没有更为高效的方法呢?