和大家讨论一个关于继承的技术问题

will38 2003-09-13 08:04:27
我开发一个s/c架构的程序.
在server开6000端口监听的时候
如下方法可以:
UdpClient udpserver = new UdpClient(6000);
但是,我希望写为另外一个方式
class server
{
public UdpClient udpserver;
public server()
{
udpserver = new UdpClient(6000);
}
}
这样编译可以通过,但run时候有错误.
因为在第三行
public UdpClient udpserver;
的时候,udpserver是一个类对象,将先调用
UdpClient udpserver = new UdpClient();
这个默认的constructor!
当然就不会容许我UdpClient udpserver = new UdpClient(6000);
我考虑用继承来解决这个问题:
class server:System.Net.Sockets
{
public UdpClient udpserver;
public server(int port):base(port)
{
udpserver = new UdpClient(port); //port=6000
}
}
但是,
1.他还是在run的时候有错误
2.csharp只能继承一个类,不能继承多个类,那么我原来继承的那个类怎么办?

请指点!
...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhBian 2003-09-14
  • 打赏
  • 举报
回复
TO: will38 (will38)

我试了一下,无论怎样做,我的机器上没有发现你所说的问题。即使用了 5999。

不过我没测试继承的实现方式。
will38 2003-09-13
  • 打赏
  • 举报
回复
to "AhBian(阿扁)"
public UdpClient udpserver = new UdpClient(6000);
当然没有问题了,这么作可以run啊
class server
{
public UdpClient udpserver;
public server(int port)
{
udpserver = new UdpClient(port); //port=6000
}
}
这么简单的class请大侠在你自己的机器上面run下看看吧
AhBian 2003-09-13
  • 打赏
  • 举报
回复
可能是 TCP 端口争用吧

你试试
public UdpClient udpserver = new UdpClient(6000);
will38 2003-09-13
  • 打赏
  • 举报
回复
to xz_king(西杀魄工人)
你说"public UdpClient udpserver; // 这个只是声明,没有分配空间(实例化)"
不对吧?
在c++里面,类成员将先调用自己的构造器啊.
这个class很简单的,请你自己copy后运行下,如何?
这和6000端口,以及防火墙无关的.
错误说明:
System.Net.Sockets.SocketException: 参考的对象种类不支持尝试的操作。
xz_king 2003-09-13
  • 打赏
  • 举报
回复
或者 6000已经被你别的程序使用了!
xz_king 2003-09-13
  • 打赏
  • 举报
回复
因为在第三行
public UdpClient udpserver;
的时候,udpserver是一个类对象,将先调用
UdpClient udpserver = new UdpClient();
-------------------------------------
说的不对,
public UdpClient udpserver; // 这个只是声明,没有分配空间(实例化)

UdpClient udpserver = new UdpClient(6000); // 是不是你装了防火墙了!!?

110,502

社区成员

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

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

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