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
。メモリ内のインスタンスがコピーされ、この新しいインスタンスがに渡されvalue
、コード_Socket
がメモリ内のこのインスタンスを参照するように設定されていることを理解しています。はい?
これが本当なら、なぜネイティブタイプ以外のプロパティを使用したいのかわかりません。多くのメンバーを持つクラスインスタンスをコピーすると、パフォーマンスが大幅に低下する可能性があると思います。また、特にこのコードの場合、コピーされたソケットインスタンスは実際には機能しないと思いますが、まだテストしていません。
とにかく、私の理解を確認するか、私の霧の論理の欠陥を説明していただければ幸いです。