回答編集履歴
3
テストコードを追加
answer
CHANGED
@@ -28,4 +28,21 @@
|
|
28
28
|
※追記
|
29
29
|
> List<AnotherClass>とList<Base>は全く別の型なのでキャストすることはできません。
|
30
30
|
|
31
|
-
と書きましたがgaya-Kさんの言う通りジェネリックの共変性・反変性による物でした。
|
31
|
+
と書きましたがgaya-Kさんの言う通りジェネリックの共変性・反変性による物でした。
|
32
|
+
|
33
|
+
※テストコードを追加
|
34
|
+
```C#
|
35
|
+
using System;
|
36
|
+
using System.Linq;
|
37
|
+
using System.Collections.Generic;
|
38
|
+
class MT_Report { }
|
39
|
+
class MT_ReportPlus : MT_Report { }
|
40
|
+
class Class
|
41
|
+
{
|
42
|
+
static void Main()
|
43
|
+
{
|
44
|
+
List<MT_Report> baseList = new List<MT_ReportPlus>().Cast<MT_Report>().ToList();
|
45
|
+
List<MT_ReportPlus> plusList = baseList.Cast<MT_ReportPlus>().ToList();
|
46
|
+
}
|
47
|
+
}
|
48
|
+
```
|
2
修正
answer
CHANGED
@@ -28,6 +28,4 @@
|
|
28
28
|
※追記
|
29
29
|
> List<AnotherClass>とList<Base>は全く別の型なのでキャストすることはできません。
|
30
30
|
|
31
|
-
と書きましたがgaya-Kさんの言う通りジェネリックの共変性・反変性による物でした。
|
31
|
+
と書きましたがgaya-Kさんの言う通りジェネリックの共変性・反変性による物でした。
|
32
|
-
こちらの解説がわかりやすかったです。
|
33
|
-
[ジェネリックの共変性・反変性](https://ufcpp.net/study/csharp/sp4_variance.html)
|
1
間違い
answer
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
List<AnotherClass>とList<Base>は全く別の型なのでキャストすることはできません。
|
1
|
+
~~List<AnotherClass>とList<Base>は全く別の型なのでキャストすることはできません。~~
|
2
|
+
※間違いでした。追記をご覧下さい。
|
2
3
|
|
3
4
|
対処として、
|
4
5
|
[Enumerable.Cast](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.cast?redirectedfrom=MSDN&view=netframework-4.7.2#System_Linq_Enumerable_Cast__1_System_Collections_IEnumerable_)
|
@@ -22,4 +23,11 @@
|
|
22
23
|
}
|
23
24
|
return res;
|
24
25
|
}
|
25
|
-
```
|
26
|
+
```
|
27
|
+
|
28
|
+
※追記
|
29
|
+
> List<AnotherClass>とList<Base>は全く別の型なのでキャストすることはできません。
|
30
|
+
|
31
|
+
と書きましたがgaya-Kさんの言う通りジェネリックの共変性・反変性による物でした。
|
32
|
+
こちらの解説がわかりやすかったです。
|
33
|
+
[ジェネリックの共変性・反変性](https://ufcpp.net/study/csharp/sp4_variance.html)
|