我想用Application存储聊天记录,在对象中使用变量从Message0gc Message19来存储消息。当用户使用超过20条消息后,Web 服务进行消息的滚动,通过将对象Application(“Message1")赋值给Application("Message0"),消息Application(”Message2")赋值给Application("Message1"),以此类推。
/////PostMessage()方法将接收到的消息插入到Application对象中,但我总觉得这Application用起来怪怪的,不知道它里面的参数都是什么样格式的。public Boolean PostMessage(String  Message)
{int LastMessage;
Application.Lock();
LastMessage=(int)Application["LastMessage"];if(LastMessage==0)
{
int i;
for(i=0;i<19;i++)
Application["Message[i]"]="";
}
if(LastMessage!=19)
{
Application["Message[LastMessage]"]=Message;
Application["LastMessage"]=LastMessage+1;}
else
{
ScrollMessage();
Application["Message[LastMessage]"]=Message;
}
Application.UnLock();
return true;
}
  private  void ScrollMessage()
{
 
for(int i=1;i <19;i ++)
Application["Message[i-1]"] = Application["Message[i]"];}

解决方案 »

  1.   

    用Message做这样的事情,感觉效率不是很好啊
    可以换个方式,把那些消息保存到数据库中的一张表中
    你每次就取最新的20条好了(按照写入时间排序),
    这样实现比较高效,也不需要用到Application的滚动操作了~~
      

  2.   

    Application不能这样用:
    for(i=0;i<19;i++)
    Application["Message[i]"]="";
    }
    双引号中的字符"Message[i]"不会变,因此,不管i是多少,你都是给同一个变量赋了20次值"",Application虽有[]索引器,但一般不用做数组,如果你要用做数组,可以这样用:
    for(i=0;i<19;i++)
    Application["Message"+i.ToString()]="";
    }
    另外,Application中存的是对象,取出来时要转化为所需类型。
      

  3.   

    谢谢晴天,那如果要把Application(”Message i")赋值给Application("Message i-1")呢?
    要怎么写?
      

  4.   

    把Message对应的名字加到一个string 数组