怎么修改ArrayList链表中的值?
struct B
{
string Name;
}
struct A
{
string MeetingID;
ArrayList P_B; //指向结构B的指针链表
}
//给链表添加一个新的用户
B b;
b.Name="XXX";
ArrayList P=new ArrayList();
P.Add(b);
A a;
a.P_B=P;
//现在想修改用户的姓名
在Delphi中应该是这样修改:B(a.P_B.item[0])^.Name="XXXX";
请问在C#中应该怎么修改呢?
问题点数:100、回复次数:16Top
1 楼mapserver(杨东 http://mapserver.cnblogs.com)回复于 2005-11-15 09:17:41 得分 10
((B)A.P_B[0]).Name = "YYYY";Top
2 楼dragonfly001(I want to fly!)回复于 2005-11-15 09:36:10 得分 10
foreach (object obj in a.P_B)
{
if(obj.ToString().Equals("3"))//這裡對第三個元素修改,自己可以修改為自己需要的
{
int i=a.P_B.IndexOf(obj);
string nObj ="name";
a.P_B.Remove(obj);
a.P_B.Insert(i,nObj);
break;
}
}Top
3 楼Cassava(车超)回复于 2005-11-15 09:52:58 得分 0
to mapserver(杨东)
按你的去做,结果.Name在语法中能自动提示出来了,但编译的时候出现了错误:error CS0131: 赋值号左边必须是变量、属性或索引器
to dragonfly001(我思考,我生存!)
你的方法是先删除再插入啊,是不是麻烦了点啊,能不能一句语句就搞定啊?Top
4 楼Eddie005(♂) №.零零伍 (♂)回复于 2005-11-15 10:06:28 得分 50
B b2 = (B)A.P_B[0];
b2.name="ZZZZZZZ";
A.P_B[0] = b2;Top
5 楼dragonfly001(I want to fly!)回复于 2005-11-15 10:06:59 得分 0
我的意思是用新的object 替代原來的!
沒辦法一句语句就搞定:)期待高手支招阿!Top
6 楼dragonfly001(I want to fly!)回复于 2005-11-15 10:14:10 得分 0
理解有誤:)LZ的每個ArrayList 只有一個用戶嗎???Top
7 楼Cassava(车超)回复于 2005-11-15 10:27:29 得分 0
按 Eddie005(♂) 暴赱 『零零伍』(︶︵︶) 的方法已经可以修改了,非常感谢各位的帮忙,但还是要三句语句,能不能一句语句就解决呢,像VC和Delphi都是一句语句就可以解决了的,难道C#对指针的支持就这么差吗?Top
8 楼Cassava(车超)回复于 2005-11-15 10:30:31 得分 0
to dragonfly001(我思考,我生存!)
每個ArrayList不止一個用戶,会有很多,我只想知道怎么修改一个用户就可以了,其他的我就会了Top
9 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-11-15 10:33:49 得分 5
B b;
b.Name="XXX";
ArrayList P=new ArrayList();
P.Add(b);
A a;
a.P_B=P;
b.Name = "XXXX";
P[0] = b;Top
10 楼swordragon(古道热肠)回复于 2005-11-15 10:34:38 得分 5
struct B
{
public string Name;
}
struct A
{
string MeetingID;
public ArrayList P_B;
}
private void Form1_Load(object sender, System.EventArgs e)
{
B b;
b.Name("XXX");
ArrayList p = new ArrayList();
p.Add(b);
A a;
a.P_B = p;
B b1 = (B)a.P_B[0];
b1.Name = "YYY";
a.P_B[0] = b1;
}Top
11 楼Eddie005(♂) №.零零伍 (♂)回复于 2005-11-15 10:41:48 得分 0
to 楼主:
我个人觉得过分地追求语法的简练未必是好事,3句很清晰,1句反而容易导致概念的模糊;这也正是C#语法风格特点之一
Top
12 楼mcsedb()回复于 2005-11-15 11:04:48 得分 0
注意一下类的转换就行了。Top
13 楼Kshatriya(何以解忧,惟有杜康)回复于 2005-11-15 11:42:44 得分 20
struct B
{
string Name;
}
你把B改为类就可以了,我想应该是值类型和引用类型的关系,具体内部的机制我也说不清楚,很模糊,不过你把B这样子写
public class B
{
public B()
{}
private string sPersonName;
public string Person
{
get
{
return sPersonName;
}
set
{
sPersonName = value;
}
}
}
然后再修改的时候就可以一句搞定了
如下:
((B)a.personNamelist[0]).Person = "bbbbb";Top
14 楼Kshatriya(何以解忧,惟有杜康)回复于 2005-11-15 11:44:03 得分 0
而且,其实B是具有属性的一个实体,为什么不作为一个类来写呢?楼主用结构来作是否有什么其他要求或者特殊的意图呢??Top
15 楼Kshatriya(何以解忧,惟有杜康)回复于 2005-11-15 11:45:31 得分 0
B是一个具有属性的实体,理论上应该写成一个类的,楼主使用结构是有特殊的意图还是有具体的要求呢?Top
16 楼Cassava(车超)回复于 2005-11-16 15:33:46 得分 0
感谢各位的帮忙,结贴了Top




