teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

テストコードを追加

2018/11/09 05:31

投稿

nakajimakotaro
nakajimakotaro

スコア90

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

修正

2018/11/09 05:31

投稿

nakajimakotaro
nakajimakotaro

スコア90

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

間違い

2018/11/08 23:17

投稿

nakajimakotaro
nakajimakotaro

スコア90

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)