c# - 了解 C# 事件对发送者对象的使用

标签 c# events pass-by-reference

我对 C# 这门语言相当陌生(来自 C++ 背景),目前我正在编写一个使用事件驱动 API 的应用程序。

这主要包括注册事件/响应处理程序和启动事件监视器,然后处理这些异步事件/响应。

我有点难以理解的是发件人对象的使用。

我想使用它的目的是在发出请求(或设置监视器)时将句柄传递给我拥有的具有各种结构和数据的类对象。然后在收到响应/引发事件时,我可以获取发送者对象,将其转换回预期的类类型并访问成员,进行进一步的更改等,因此将其视为仍然是指向原始数据的指针(我希望它会是这样吗?)。

所以我的问题真的是,当我在我的请求中传递一个类对象时,这将是一个有效的引用,还是将它按值复制到某处,因为它实际上只是一个通用对象,我将结束在事件中生成我的类对象的空副本?

或者第三种选择,我可能完全走错了路,应该忘记整个事情? :)

问题是我的大脑仍在以指针模式工作,我认为...

最佳答案

这是一个引用。试试这段代码看看它是如何工作的:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    Whatever(sender);
}

private void Whatever(object sender)
{
    TextBox tb = (TextBox)sender;
    tb.Text = "yo";
}

如果 object 不是通过引用传递的,textBox1 将保留您在其中键入的任何文本。

关于c# - 了解 C# 事件对发送者对象的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530867/

相关文章:

c# - 更改连接字符串后 ASP.NET Core 重新注册 dbcontext

c# - (C#) Azure - 实时身份验证期间出现空引用异常

c++ - 通过引用调用 : Use of undeclared identifier

c# - 具有关系的动态 Linq "Where statement"

c# - Cookie.ExpireTimeSpan 被忽略并在 CookieAuthentication 中设置为 Session

java - JDialog 模式的问题(主窗口的鼠标事件均被触发和缓冲)

java - 获取 Java 文件系统文件夹 onchange 事件(如 Dropbox)

java - 使用 JFreeChart 和 slider 更新图表

php - 函数中的可变长度引用参数列表

c++ - 为什么我的字符串引用成员变量在 C++ 中设置为空字符串?