c# - 为什么我不能将 Action<Int32> 转换为 Action<Object>?

标签 c# casting

我有几个地方有 Action<Int32> , Action<Boolean> , Action<SomeClassName>正在使用,但是当涉及到将操作作为类方法中的参数传递时,我无法强制转换 Action<Int32>Action<Boolean>Action<Object> .

为什么不能用简单的类型转换来完成转换?这个 Actor 有可能吗?最后,如果可能的话,我将如何处理这个类型转换。

最佳答案

因为它会破坏类型安全。

当你声明Action<Int32> ,你说“这是一个需要一个 Int32 参数的委托(delegate)”。

如果这可以直接转换为 Action<object> , 然后你现在可以用绝对不是 Int32 的东西调用 Action ,例如 DateTime .在这种情况下,C# 可防止您搬起石头砸自己的脚。

关于c# - 为什么我不能将 Action<Int32> 转换为 Action<Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617170/

相关文章:

c# - 是否可以查询查询?

c# - 如何将对象传输到 Azure Blob 存储而不将文件保存在本地存储上?

c# - UWP ServicePointManager.ServerCertificateValidationCallback

c# - 将对象转换为通用接口(interface)

javascript - 为什么 Javascript 仅对已分配的字符串进行字符串连接的类型转换?

c# - EPPlus 自动过滤器仅适用于最后一个电池

c# - 使用 SSH.NET 查找具有特定文件名的最新 SFTP 文件

c++ - 为什么C++不允许(自动)强制转换?

c - 输出指向文本文件的指针时为 "makes pointer from integer without a cast"

C# 泛型方法与转换