【发布时间】:2011-08-24 22:56:31
【问题描述】:
我正在创建一个调用回调函数的类,我希望它在某些情况下传递一些数据,但这些数据可能会有所不同。在 C++ 中我会使用 void* 但在 C# 中它是不安全的,这意味着它可能会被 GCed。有没有办法在 C# 中传递未知类型的数据?
【问题讨论】:
-
强大的力量意味着巨大的责任。我的意思是即使 C++ 允许使用这些技巧 - 不要忘记设计。
-
真正的问题是你为什么要创建一个必须“猜测”它正在处理的数据类型的函数?
-
在我看来,具有未定义参数类型的回调(委托)是弱应用程序设计的结果。您能提供更多信息吗?
-
弱设计是可能的,因为我对 C# 还比较陌生,现在我正在为几乎每次特定的鼠标点击创建一个新类。所有元素都是动态创建并添加到 StackPanels 或 Grids 中的,但它们具有功能,例如隐藏它们。为了做到这一点,我必须在某处保存对它的引用,所以我只为那种鼠标点击创建了一个类。它一直在继续......现在我正在尝试制作一些通用的点击处理程序,它将这些数据传递给回调函数,这将大大减少代码量。
标签: c# function arguments void-pointers