C# 通过连接的插座

C# 通过连接的插座,c#,silverlight,sockets,tcp,C#,Silverlight,Sockets,Tcp,如果这个问题没有意义,请提前道歉,我对这一切都很陌生,但我有一个我想解决的担忧 下面是我创建的一个类的一部分,用于处理与音频/视频服务器的连接,其思想是将这个连接对象传递给处理所有音频和视频功能的调用对象 class Connection{ private socket connection_socket; public void Connect(string IP_Address) { connection_socket = new Socket(Addre

如果这个问题没有意义,请提前道歉,我对这一切都很陌生,但我有一个我想解决的担忧

下面是我创建的一个类的一部分,用于处理与音频/视频服务器的连接,其思想是将这个连接对象传递给处理所有音频和视频功能的调用对象

class Connection{

private socket connection_socket;

    public void Connect(string IP_Address)
    {
        connection_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();

        socketEventArg.Completed += onConnectCompleted;
        connection_socket.ConnectAsync(socketEventArg);
    }
}
下面是我如何将connection对象复制到其他类,它是AudioCall和VideoCall构造函数的一部分,然后将其复制到Call类中的_connection变量

public class AudioCall : Call
{
    public AudioCall(Connection connection)
    {
        _connection = connection;
    }
我担心的是,我真的希望有人能理解它背后的逻辑,因为连接对象实际上是一个连接,所以我使用了ConnectASync,它已经连接了,当我通过它复制这个连接时,它将无法正常工作。我应该将它复制下来作为引用,以便使用实际的连接对象,还是按它的方式工作?我不完全理解插座是如何工作的,所以我现在不知道

我希望有人能提供帮助并表示感谢。

C#中的每个对象(不包括int等值类型)都是通过引用传递的。因此,如果这个
连接
对象为一个类工作,那么其他每个类也可以。
使其失败的唯一方法是将其传递给具有不同网络属性的另一个节点(例如,通过中间件)。

我真的不明白您的意思。由于连接是一个类,因此您已经将该连接作为引用传递。你说它不能按预期工作是什么意思?因此,我被告知line _connection=connection将工作的方式是,连接将被复制,然后应用到_connection,如果我通过连接进行连接,复制的版本是否仍将连接到端口?对不起,如果这不合理,我正在尝试。哦,好的,我不知道-这很有帮助thanks@user345453需要更清楚的是:
struct
s也不是通过引用传递的。好的,谢谢!我现在真的不知道如何使用structs,但至少我在学习时知道了!