質問編集履歴

2

文の修正

2021/01/24 05:03

投稿

mamyonya768
mamyonya768

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,14 @@
1
- 下記のTestメソッドで、
1
+ 下記のTest()で、
2
2
 
3
3
  IDataを実装するDataを型引数とした`IEnumerable<Data>`型を`IEnumerable<IData>`型に代入できないのはどうしてでしょうか?
4
4
 
5
5
 
6
6
 
7
- Dataがクラスであればコンパイルが通りますが、下記のコードのよう構造体の場合はエラーとなるのはなぜでしょうか?
7
+ Dataがクラスであればコンパイルが通りますが、下記のコードのよう構造体の場合はエラーとなるのはなぜでしょうか?
8
8
 
9
9
  おそらく、構造体は値型でinterfaceは参照ということが原因かと思いますが、
10
10
 
11
- IData型の変数にDataを代入するのは可能で、`IEnumerable<IData>`に`IEnumerable<Data>`を代入するのは不可能という点が理解できません。
11
+ Test2()のようにIData型の変数にDataを代入するのは可能で、`IEnumerable<IData>`に`IEnumerable<Data>`を代入するのは不可能という点が理解できません。
12
12
 
13
13
 
14
14
 
@@ -42,6 +42,14 @@
42
42
 
43
43
  }
44
44
 
45
+ public void Test2()
46
+
47
+ {
48
+
49
+ IData data = new Data();
50
+
51
+ }
52
+
45
53
  }
46
54
 
47
55
 

1

わかりやすく

2021/01/24 05:03

投稿

mamyonya768
mamyonya768

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,16 @@
1
- 下記のコードで、Dataがクラスの場合はコンパイルが通りますが、構造体の場合はエラーとなるのはどうしてでしょうか?
1
+ 下記のTestメソッドで、
2
2
 
3
+ IDataを実装するDataを型引数とした`IEnumerable<Data>`型を`IEnumerable<IData>`型に代入できないのはどうしてでしょうか?
4
+
5
+
6
+
7
+ Dataがクラスであればコンパイルが通りますが、下記のコードのような構造体の場合はエラーとなるのはなぜでしょうか?
8
+
9
+ おそらく、構造体は値型でinterfaceは参照ということが原因かと思いますが、
10
+
3
- おそらく、構造体は値型でinterfaceは参照ということが原因かと思いますが、IData型の変数にDataを代入するのは可能で、IEnumerable<IData>に代入するのは不可能という点がちゃんと理解できません。
11
+ IData型の変数にDataを代入するのは可能で、`IEnumerable<IData>``IEnumerable<Data>`を代入するのは不可能という点が理解できません。
12
+
13
+
4
14
 
5
15
  何卒、よろしくお願いいたします。
6
16