我还是C#和编程的新手。我已经使用了WPF并寻找了一个socket实践。我只是没有得到eventHandlers中存在的第二个参数的原因。如果我们传递对象本身,为什么我们需要EventArgs? C#
我试图做一个异步服务器。但是在视频中,程序员已经将自定义eventArgs添加到对象本身,并将它们添加到eventHandler中。为了让事情更清楚一点有代码的一部分:
缓冲器,用于接收到的数据类
class DataReceivedEventArgs : EventArgs
{
public const int BufferSize = 1024;
public byte[] BufferBytes;
public int ToReceive;
public MemoryStream BufferStream;
// Constructor for this
public DataReceivedEventArgs(int toReceive)...
// Dispose function for this
public void Dispose()...
// Close function for stream
private void Close()...
}
Client类
class Client
{
private byte[] lenBufferBytes;
private DataReceivedEventArgs receiveBuffer;
private Socket socket;
public IPEndPoint EndPoint...
// Constructor for this
public Client(Socket socket)
{
this.socket = socket;
this.lenBufferBytes = new byte[4];
}
// Events
public event EventHandler Disconnected;
public event EventHandler<DataReceivedEventArgs> DataReceived;
// Event Invokers
protected virtual void OnDisconnected()
{
Disconnected?.Invoke(this, EventArgs.Empty);
}
protected virtual void OnDataReceived(DataReceivedEventArgs e)
{
DataReceived?.Invoke(this, e);
}
}
所以我的问题是:
1.为什么你需要两次传递相同的东西?
和
2.为什么你需要有EventArgs的,如果你能在对象存储一切信息并更改对象类唯一没有密码破译,如果需要添加新的ARGS?
好耶,这让更多的现在感觉到了一点,但如果我再丢失了,我会再回到这个问题。无论如何,帮助Thx :) –