Card类的定义:
public class Card
{
  public Card()
  {
    id = 0;
    kind = 0;
    num = 0;
    reserved = 0;
  }
  public byte id;
  public byte kind;
  public byte num;
  public byte reserved;
}
客户端接收数据:
    int place = 0;
    for(int i=0;i<17;i++)
    {
        this.userCard[i] = new Card();    
     this.userCard[i].id = this.recvBuffer[place];
     this.userCard[i].kind= this.recvBuffer[place+1];
     this.userCard[i].num= this.recvBuffer[place+2];
     this.userCard[i].reserved= this.recvBuffer[place+3];
        place += 4;
    }
这段代码,接收正常,以下代码,接收到的数据会出错:    int place = 0;
    for(int i=0;i<17;i++)
    {
     this.userCard[i].id = 0;
     this.userCard[i].kind= 0;
     this.userCard[i].num= 0;
     this.userCard[i].id = 0;
     this.userCard[i].id = this.recvBuffer[place];
     this.userCard[i].kind= this.recvBuffer[place+1];
     this.userCard[i].num= this.recvBuffer[place+2];
     this.userCard[i].reserved= this.recvBuffer[place+3];
        place += 4;
    }因为,每局游戏开始后都会发牌,所以采用第一种方法会new Card很多次,造成资源浪费,
第二种方法,我试了很多次,第一次发牌没问题,第二次就会出现接收到的数据和服务器发出的数据不同,
调试服务器发出数据是正确的.
哪位高手帮忙看一下.

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sgh321】截止到2008-07-10 17:59:39的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:1                        得分贴总数量:1                        回帖的得分率:100%                     
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    我想知道你接受到的数据和服务器发出的数据之间有什么关系没有。如果知道了这个,就知道你的问题在哪里了。
    我感觉可能是new的时候开辟新空间,所以存储无误;而第2种方法等于是在原来创建的基础上全部归零。如果你把
        this.userCard[i].id = 0; 
        this.userCard[i].kind= 0; 
        this.userCard[i].num= 0; 
        this.userCard[i].id = 0; 
    这4行去掉,结果是什么样的呢?
      

  3.   

    这点代码,看了个大致情况。
    用你的第一种方法客户端接收数据: 
        int place = 0; 
        for(int i=0;i <17;i++) 
        { 
           Card c  = new Card();         ……
           c=null;
        } 这样垃圾回自动回收,应该不会造成资源浪费。
      

  4.   

    jishu_vip:
      如果在构造函数中new Card,
    然后,每次收数据时:
      c = null;
      c = new Card();我测试了,不会出现数据错误的现象,
    这样的会对性能产生影响吗?
      

  5.   

    zhaolinger2:
      结果,是相同的;