C# 中public struct dataStruct 
        {
            public int  sameElement;
            public int [] publicArray;
        }
static List<dataStruct> AttributeDataList;
AttributeDataList = new List<dataStruct>();
            
      int intRow = 0;
      int intColumn = 0;
AttributeDataList[intRow].sameElement +=2;
AttributeDataList[intRow].publicArray[intColumn] = i;
intColumn += 1;
AttributeDataList[intRow].publicArray[intColumn] = j;
intColumn += 1;PS:AttributeDataList[intRow].sameElement +=2; 无法付值

解决方案 »

  1.   

    先把AttributeDataList[intRow]付到一个dataStruct  类型的变量中去
      

  2.   

    C# 中public struct dataStruct 
            {
                public int  sameElement;
                public int [] publicArray;
            }
    static List <dataStruct> AttributeDataList;
    AttributeDataList = new List <dataStruct>();
                
          int intRow = 0;
          int intColumn = 0;
    //好像不是楼主这样用的吧
    dataStruct  a=new dataStruct ();
    a.sameElement=2
    AttributeDataList[intRow]=a 
      

  3.   

    List里面根本什么就没有,也就是说没有元素,
    AttributeDataList[intRow].sameElement 这样写怎么能行呢??C# 中public struct dataStruct 
            {
                public int  sameElement;
                public int [] publicArray;
            }
    static List <dataStruct> AttributeDataList;
    AttributeDataList = new List <dataStruct>();dataStruct ds = new dataStruct();
    ds.sameElement=???;
    ds.publicArray=???;
    AttributeDataList.Add(ds);//此时才有了一个元素的
    然后才能AttributeDataList[intRow].sameElement这样写吧.
    我是一个初学者,有什么说的不对请指教呀!
      

  4.   

    楼上说的没错,list中记得要先放东西进去,否则索引器读出来的是null。
    “AttributeDataList[intRow].sameElement +=2; 无法付值”——问题在于List中存放的是Struct,它是“值类型”的。而值类型在每次修改之前都会先Copy一份副本,然后在这个副本上进行修改。这样的话假设AttributeDataList[intRow].sameElement操作可以正确地执行会是什么情况呢:
    1、分配一段内存给dataStruct结构
    2、将AttributeDataList[intRow]的值复制过来
    3、修改该内存的值,即进行+2操作
    4、?第4步该怎么做呢?我们在新的内存地址中保存了+2之后的结果,然而这个新的dataStruct内存段并没有指针指向它,因为我们没有把它赋给任何的变量。内存泄露!不要奢望AttributeDataList[intRow]会指向这段新的内存块,还记得我们是copy了的吗?如果list中存放的是“引用类型”就没问题,因为+2操作直接在原来的内存块上进行了。AttributeDataList[intRow]指向的地址不面。
    楼主试一下,这样的操作就是可以的:
    List<Form> frmList = new List<Form>();
    frmList.Add(this);
    frmList[0].Text = "修改了的Title";
      

  5.   


    那List 能相当于数组用吗?我想循环给List附值可以吗