socket是引型吧,可为什么两个socket的Connected会不一样?

poetc 2003-04-17 10:12:29
主窗体form1 socket;

在子窗体构造函数中将form1中socket传进来:
构造函数:
public Form2(Form1 form1)
{
this.form1=form1;
this.socket=form1.socket;
}

当我form1中socket连接上后,
bool b1=this.form1.socket.Connected;
bool b2=this.socket.Connected;
//b1=true;b2=false;

why???
...全文
98 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
poetc 2003-04-20
  • 打赏
  • 举报
回复

form2中的socket和form1中socket 指向同一内存地址;当form1中socket用new 后将不再和form2中的socket一样啦;

引用不是别名。

(是这样的吧?)

结贴。
poetc 2003-04-19
  • 打赏
  • 举报
回复
忘了,

当我form1中socket连接上后,
bool b1=this.form1.socket.Connected;
bool b2=this.socket.Connected;
//b1=true;b2=false;

是form2中的代码。
poetc 2003-04-19
  • 打赏
  • 举报
回复
我现在在form2中这样解决:
if(this.form1.socket.Connected)

Form2中:
Form1 form1;
private Socket socket;

Form2构造函数:
public Form2(Form1 form1)
{
this.form1=form1;
this.socket=this.form1.socket;//new Socket()都不用的
}
但form2中socket的Connected和form1 中的socket不一样。

daou101 2003-04-18
  • 打赏
  • 举报
回复
你的第一个socket是form1的字段,而第二个是全局类的字段,当然不同了呀。
地址,生存期,都不同。
timmy3310 2003-04-17
  • 打赏
  • 举报
回复
没道理吧

Socket是引用没错

一定是你的代码什么地方除了问题,你再仔细找找
yarshray 2003-04-17
  • 打赏
  • 举报
回复
你form2 的socket是怎么申明的?
贝贝壳壳 2003-04-17
  • 打赏
  • 举报
回复
高手如云,观摩学习ing~~
aspcn 2003-04-17
  • 打赏
  • 举报
回复
哪可能就是一个"="号就解决问题啊??

不然一些东东要实现Clone方法干嘛啊:))

至于让他们相等,除了用unsafe传地址外,没有想到好办法.
nmgrlt 2003-04-17
  • 打赏
  • 举报
回复
我就不参合了。
nmgrlt 2003-04-17
  • 打赏
  • 举报
回复
既然在此有两位高手了,

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧