![]() |
1
1
您可能希望TcpClient和ZClient之间的关系是“has a”而不是“is a”
然后可以将调用委托给底层TcpClient |
![]() |
2
6
因为它是向后的。TcpClient不包含缓冲区或队列,因为它不是ZClient。苹果是水果,但并非所有的水果都是苹果。 您需要某种显式转换。您可以提供接受TcpClient的ZClient构造函数,或者在TcpClient上提供返回ZClient的扩展方法。这可能需要将ZClient设置为TcpClient的包装类,而不是ZClient的子类。 |
![]() |
3
4
全部
:也许另一个例子会有所帮助
|
![]() |
4
0
对。怎么可能
|
![]() |
5
0
简而言之:
|
![]() |
6
0
如果您从侦听器获取TcpClient,那么侦听器将像往常一样返回一个TcpClient。你永远不会有新的客户。TcpListener对您的新类一无所知,因此无法创建它。如果您只想拥有一个向TcpClient添加功能的对象,那么您可能只想使用组合而不是继承。简单地说,ZClient通过在内部存储TcpClient来包装TcpClient,并添加您想要的任何功能。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |