回答編集履歴

1

追記1

2018/08/04 10:24

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -11,3 +11,125 @@
11
11
 
12
12
 
13
13
  まぁ、Animalに関してはまだいいとして、Animal.Big.Cute.Panda とやらが余計にわからん。
14
+
15
+
16
+
17
+ ---
18
+
19
+
20
+
21
+ [追記1]
22
+
23
+
24
+
25
+ ```C#
26
+
27
+ public List<Animal> animalList = new List<Animal>();
28
+
29
+
30
+
31
+ public void Test(string data)
32
+
33
+ {
34
+
35
+         //ここでなんだかんだでデータを読み取って動物を特定する
36
+
37
+
38
+
39
+ Animal.Big.Cute.Panda シンシン = new Animal.Big.CUte();
40
+
41
+ animalList.Add(シンシン); //これやるとエラーとなる
42
+
43
+ //"Animal.Big.Cute.PandaからAnimalへ変換できません"エラーが出る
44
+
45
+ }
46
+
47
+
48
+
49
+ public class Animal
50
+
51
+ {
52
+
53
+ public class Big
54
+
55
+ {
56
+
57
+ public class Cute
58
+
59
+ {
60
+
61
+ public class Panda
62
+
63
+ {
64
+
65
+ }
66
+
67
+ }
68
+
69
+ }
70
+
71
+ }
72
+
73
+ ```
74
+
75
+
76
+
77
+ ですよね?
78
+
79
+
80
+
81
+ それなら当り前です。
82
+
83
+
84
+
85
+ クラス内のクラス ( 内部クラス? ) では無理です。
86
+
87
+ どうしても Animal で保持したいなら
88
+
89
+
90
+
91
+ ```C#
92
+
93
+ public List<Animal> animals = new List<Animal>();
94
+
95
+
96
+
97
+ public void Test( string data ){
98
+
99
+ // ここでなんだかんだで...
100
+
101
+ Panda SinSin = new Panda();
102
+
103
+ // 若しくは
104
+
105
+ // Animal SinSin = new Panda() としてもいい
106
+
107
+ animals.add( SinSin );
108
+
109
+ }
110
+
111
+
112
+
113
+ public class Animal{
114
+
115
+ // フィールドやらメソッドやらがある
116
+
117
+ }
118
+
119
+
120
+
121
+ public class Panda : Animal{
122
+
123
+ // フィールドやらメソッドやらがある
124
+
125
+ }
126
+
127
+ ```
128
+
129
+
130
+
131
+ のように「**継承**」によって行います。これでいわゆるポリモーフィズムとやらができる。
132
+
133
+
134
+
135
+ デザインパターンの**Factoryパターン**辺りをチェックしてください。