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; 无法付值
{
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; 无法付值
解决方案 »
- vs2010的reportviewer的打印功能
- C# 通过Sql语句求和
- VS 2010水晶报表无法使用的问题
- VS2008+SQL2005开发的程序,如果数据库转移到SQL2000上会不会出问题
- winform里如何控制滚动条不出现。
- 没有安装office,但是我要打开office文档,那里有这种免费的DLL提供吗?最好是开源的
- Socket传递DataSet,怎样实现
- C#中使用DrawString绘制文本时怎样使文本居中或右对齐
- 如何让Notify实现系统热键功能?
- 强烈建议“思归”大虾介绍以下自己的学习方法。大家帮忙顶啊!!!☆☆☆☆☆
- 怎么用C#写一个视频播放器,简单点的,,(100分)
- TreeView右键菜单显示后,要等待大概3-5秒才能消失,偶已经使用Refresh方法了,还是不行,哪位大侠请指教了?
{
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
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这样写吧.
我是一个初学者,有什么说的不对请指教呀!
“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";
那List 能相当于数组用吗?我想循环给List附值可以吗