私の質問の文脈をよりよく説明するために、いくつかの仮説から始めます。
配列共分散
仮定 1.1
値型の配列は共変ではありません。int[]お渡しできませんobject[]。
仮定 1.2
参照型の配列は、有効な と共変ですIEnumerable。string[]を渡すことができますIEnumerable<object>)。
仮定 1.3
参照型の配列は、有効な共変配列と共変です。string[]を渡すことができobject[]ます。
リストの共分散
仮定 2.1 (1.1 と同じ)
値型のリストは共変ではありません。List<int>お渡しできませんList<object>。
仮定 2.2 (1.2 と同じ)
参照型のリストは、有効な と共変ですIEnumerable。List<string>を渡すことができますIEnumerable<object>)。
公準 2.3 (1.3 とは異なる)
参照型のリストは、有効な共変と共変ではありませんList。List<string>には渡せませんList<object>)。
私の質問は、仮定 1.3、2.2、および 2.3 に関するものです。具体的には:
- には合格できるのに、 には
string[]合格できないのはなぜですか?object[]List<string>List<object> List<string>for を通過できるのに for を通過できIEnumerable<object>ないのはなぜList<object>ですか?