C# 中的 void* 替代方案
我正在创建一个调用回调函数的类,我希望它在某些情况下传递一些数据,但这些数据可能会有所不同。在 C++ 中,我会使用 void*,但在 C# 中它是不安全的,这意味着它可能会被GC。 C# 有没有办法传递未知类型的数据?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我正在创建一个调用回调函数的类,我希望它在某些情况下传递一些数据,但这些数据可能会有所不同。在 C++ 中,我会使用 void*,但在 C# 中它是不安全的,这意味着它可能会被GC。 C# 有没有办法传递未知类型的数据?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
您有两个选项:
泛型(它允许您调用方法时指定类型...并且对象将在方法中正确键入。)
或 System.Object (这意味着您必须确定方法内对象的实际类型并进行适当的转换)
You've got two options:
Generics (which allow you to specify the type when you call the method... and the object will be properly typed within the method.)
Or System.Object (which means you'll have to ascertain the object's actual type inside your method and cast appropriately)
为此,您应该使用泛型。
http://msdn.microsoft.com/en-us/library/twcad0zb.aspx
You should use Generics for this.
http://msdn.microsoft.com/en-us/library/twcad0zb.aspx
最简单的解决方案是使用
object
类型,因为所有其他对象都继承自该对象。这样做可以让您自己传入任何对象类型。http://msdn.microsoft.com/en-us/library/system .object.aspx
The simplest solution would be to use the
object
type because all other objects inherit from this object. Doing so you allow yourself to pass in any object type.http://msdn.microsoft.com/en-us/library/system.object.aspx
您可以将其传递给对象。与 C++ 不同,您可以在 C# 中执行类型安全转换,而在 C++ 中则不能。
You'd pass it around at an object. Unlike C++ you'll be able to do a type safe cast in C#, whereas you can't in C++.
我认为你应该使用 Object.
I think you should use Object.
如果您使用 .net 4,您还可以使用
dynamic
类型。If you're working in .net 4 you can also use the
dynamic
type.