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#中应该怎么修改呢?

解决方案 »

  1.   

    ((B)A.P_B[0]).Name = "YYYY";
      

  2.   


    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;
       }
    }
      

  3.   

    to  mapserver(杨东) 
    按你的去做,结果.Name在语法中能自动提示出来了,但编译的时候出现了错误:error CS0131: 赋值号左边必须是变量、属性或索引器to dragonfly001(我思考,我生存!) 
    你的方法是先删除再插入啊,是不是麻烦了点啊,能不能一句语句就搞定啊?
      

  4.   

    B b2 = (B)A.P_B[0];
    b2.name="ZZZZZZZ";
    A.P_B[0] = b2;
      

  5.   

    我的意思是用新的object 替代原來的!
    沒辦法一句语句就搞定:)期待高手支招阿!
      

  6.   

    理解有誤:)LZ的每個ArrayList 只有一個用戶嗎???
      

  7.   

    按 Eddie005(♂) 暴赱 『零零伍』(︶︵︶) 的方法已经可以修改了,非常感谢各位的帮忙,但还是要三句语句,能不能一句语句就解决呢,像VC和Delphi都是一句语句就可以解决了的,难道C#对指针的支持就这么差吗?
      

  8.   

    to dragonfly001(我思考,我生存!) 
    每個ArrayList不止一個用戶,会有很多,我只想知道怎么修改一个用户就可以了,其他的我就会了
      

  9.   

    B b;
    b.Name="XXX";
    ArrayList P=new ArrayList();
    P.Add(b);
    A a;
    a.P_B=P;b.Name = "XXXX";
    P[0] = b;
      

  10.   

    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;
    }
      

  11.   

    to 楼主:
       我个人觉得过分地追求语法的简练未必是好事,3句很清晰,1句反而容易导致概念的模糊;这也正是C#语法风格特点之一
      

  12.   

    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";