Action<int>
anは基本的にanではないため、共変性 (または反変性ですか?) を介して直接キャストを行うことはできません。Action<object>
後者は任意のオブジェクトを渡すことができますが、前者はanのみを渡すことができint
ます。
次のようにアクションをラップすることで、これを回避できます。
Action<int> aInt = ...;
Action<object> aObj = o => aInt((int)o);
これは、キャストが良い考えではない理由を再度示しています。aObj
以外のものを渡すint
と、キャスト例外が発生します。
逆に、理論上はanをanにキャストできます。ただし、実際には、これは値型ではなく参照型でのみ機能します。したがって、 では実行できますが、では実行できません。Action<object>
Action<int>
int
string
int