定义个结构
struct MyStruct
{
public string name;
}然后用它
System.Collections.ArrayList myStructs = new ArrayList();
MyStruct myStruct = new MyStruct();
myStruct.name = "11111";
myStructs.Add(myStruct);foreach(MyStruct my in myStructs)
{
my.name = "222";
}
注意了,上面
my.name = "222";
这行编译时会说“赋值号左边必须是变量、属性或索引器”——读可以,写不允许。写了这么久,居然今天才知道,不过想不通为什么C#要这么限制。另,如果写成
for(int i=0; i<myStructs.Count; i++)
{
MyStruct my = (MyStruct)myStructs[i];
my.name = "333";
}
就没有问题如果定义成
MyStruct[] myStructs = new MyStruct[1];
用foreach的话,也是同样的编译错误!但是的但是:如果定义成class,就没上面的问题~~~~!总结的说:struct搭配foreach,只读。哪位能从机制上给解释一下.net为什么要这样做咛?
struct MyStruct
{
public string name;
}然后用它
System.Collections.ArrayList myStructs = new ArrayList();
MyStruct myStruct = new MyStruct();
myStruct.name = "11111";
myStructs.Add(myStruct);foreach(MyStruct my in myStructs)
{
my.name = "222";
}
注意了,上面
my.name = "222";
这行编译时会说“赋值号左边必须是变量、属性或索引器”——读可以,写不允许。写了这么久,居然今天才知道,不过想不通为什么C#要这么限制。另,如果写成
for(int i=0; i<myStructs.Count; i++)
{
MyStruct my = (MyStruct)myStructs[i];
my.name = "333";
}
就没有问题如果定义成
MyStruct[] myStructs = new MyStruct[1];
用foreach的话,也是同样的编译错误!但是的但是:如果定义成class,就没上面的问题~~~~!总结的说:struct搭配foreach,只读。哪位能从机制上给解释一下.net为什么要这样做咛?
解决方案 »
- 大家帮我看看这个程序为甚么不能执行呢?
- RSA加解密的实际应用?
- 我操作完日志后dll就加载不上了?
- WinForm下关于TreeView绑定数组的问题
- 一段PHP代码转成C# ,大哥们帮帮忙
- 怎样跨网段访问远程的数据库(SQLserver)。。急急!!!!!!!
- 从微软网站上COPY了这个程序读excel不知道错在哪里
- 怎么用SendMessage()/ GetWindowText ()取得其他程序中控件的值??
- visual studio 2005, C#, 多线程,调试问题
- 点击UserControl中的Button怎么回调包含此UserControl页面中的一个方法
- 数据绑定控件在回传没有数据源了,而且也得不到选定的值
- c#中怎么控制textbox的行间距?
foreach(object obj in myStructs)
{
MyStruct my=(MyStruct)obj;
my.name = "222";
}
((MyStruct)myStructs[i]).name="4444";
也不行,于是想到是struct是值类型上面的my.name="222"里的my已非myStructs[i]了,amandag(高歌) 一开导,立刻茅塞顿开。赞