Я только начинаю работу над классом для обработки клиентских подключений к TCP серверу. Вот код, который я написал до сих пор:
Imports System.Net.Sockets
Imports System.Net
Public Class Client
Private _Socket As Socket
Public Property Socket As Socket
Get
Return _Socket
End Get
Set(ByVal value As Socket)
_Socket = value
End Set
End Property
Public Enum State
RequestHeader ''#Waiting for, or in the process of receiving, the request header
ResponseHeader ''#Sending the response header
Stream ''#Setup is complete, sending regular stream
End Enum
Public Sub New()
End Sub
Public Sub New(ByRef Socket As Socket)
Me._Socket = Socket
End Sub
End Class
Итак, в моем перегруженном конструкторе я принимаю ссылку на экземпляр System.Net. Sockets.Socket
, да?
Теперь в моем свойстве Socket
при установке значения требуется, чтобы оно было ByVal
. Насколько я понимаю, экземпляр в памяти копируется , и этот новый экземпляр передается в значение
, а мои кодовые наборы _Socket
для ссылки на этот экземпляр в памяти. Да?
Если это правда, то я не понимаю, почему я хочу использовать свойства для чего-либо, кроме собственных типов. Я' Я могу себе представить, что при копировании экземпляров класса с большим количеством членов может быть значительное снижение производительности. Кроме того, для этого кода, в частности, я бы предположил, что скопированный экземпляр сокета не будет работать, но я еще не тестировал его.
В любом случае, если бы вы могли подтвердить мое понимание или объяснить недостатки в моем туманная логика, я был бы очень признателен.