質問編集履歴

5

コードの修正

2016/05/21 14:35

投稿

aridai1221
aridai1221

スコア45

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  {
36
36
 
37
- Console.WriteLine(createInstancer(1).Name);
37
+ Console.WriteLine(createInstance(1).Name);
38
38
 
39
39
  Console.WriteLine(createInstance(2).Name);
40
40
 

4

サンプルコードのコメントを追加した

2016/05/21 14:34

投稿

aridai1221
aridai1221

スコア45

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,8 @@
42
42
 
43
43
 
44
44
 
45
+ // インスタンスを生成する (例外に対する処理は今回は省いてあります)
46
+
45
47
  public static ClassBase createInstance(int num)
46
48
 
47
49
  => Activator.CreateInstance(Type.GetType($"Class{num}")) as ClassBase;

3

追記した

2016/05/21 14:27

投稿

aridai1221
aridai1221

スコア45

test CHANGED
File without changes
test CHANGED
@@ -241,3 +241,13 @@
241
241
  ・それ以外のやり方
242
242
 
243
243
  どのように書きますか。
244
+
245
+
246
+
247
+ 追記
248
+
249
+ 例を変えました。
250
+
251
+ あと、「必ずしもクラスにする必要は無いのではないか?」
252
+
253
+ という回答もやめてください。

2

例を変えた

2016/05/21 14:19

投稿

aridai1221
aridai1221

スコア45

test CHANGED
File without changes
test CHANGED
@@ -1,22 +1,20 @@
1
- C#初心者でゲーム制作初心者です。
1
+ C#初心者です。
2
-
3
-
4
-
2
+
3
+
4
+
5
- ゲームでンスターの管理の仕方について考えていました。
5
+ 複数クラスのインスタンスを生成するについて考えていました。
6
6
 
7
7
 
8
8
 
9
9
  最初に考えたコードをコード1に示します。
10
10
 
11
- 各モンスターごとにクラスを作り、
12
-
13
- Monster1, Monster2, ... のように連続する名前をつけました。
11
+ Class1, Class2, ... のように連続する名前のクラス作りました。
14
12
 
15
13
 
16
14
 
17
15
  そしてこれらのインスタンスを生成するコードも書きました。
18
16
 
19
- Program::createMonsterがそれです。
17
+ Program::createInstanceがそれです。
20
18
 
21
19
  ```C#
22
20
 
@@ -36,23 +34,23 @@
36
34
 
37
35
  {
38
36
 
39
- Console.WriteLine(createMonster(1).Name);
37
+ Console.WriteLine(createInstancer(1).Name);
40
-
38
+
41
- Console.WriteLine(createMonster(2).Name);
39
+ Console.WriteLine(createInstance(2).Name);
42
40
 
43
41
  }
44
42
 
45
43
 
46
44
 
47
- public static MonsterBase createMonster(int monsterId)
45
+ public static ClassBase createInstance(int num)
48
-
46
+
49
- => Activator.CreateInstance(Type.GetType($"Monster{monsterId}")) as MonsterBase;
47
+ => Activator.CreateInstance(Type.GetType($"Class{num}")) as ClassBase;
50
-
48
+
51
- }
49
+ }
52
-
53
-
54
-
50
+
51
+
52
+
55
- abstract class MonsterBase
53
+ abstract class ClassBase
56
54
 
57
55
  {
58
56
 
@@ -62,25 +60,25 @@
62
60
 
63
61
 
64
62
 
65
- class Monster1 : MonsterBase
63
+ class Class1 : ClassBase
66
-
64
+
67
- {
65
+ {
68
-
66
+
69
- public override string Name
67
+ public override string Name
70
-
68
+
71
- => "モンター1";
69
+ => "クラス1";
72
-
70
+
73
- }
71
+ }
74
-
75
-
76
-
72
+
73
+
74
+
77
- class Monster2 : MonsterBase
75
+ class Class2 : ClassBase
78
-
76
+
79
- {
77
+ {
80
-
78
+
81
- public override string Name
79
+ public override string Name
82
-
80
+
83
- => "モンター2";
81
+ => "クラス2";
84
82
 
85
83
  }
86
84
 
@@ -120,31 +118,31 @@
120
118
 
121
119
  {
122
120
 
123
- Console.WriteLine(createMonster(1).Name);
121
+ Console.WriteLine(createInstance(1).Name);
124
-
122
+
125
- Console.WriteLine(createMonster(2).Name);
123
+ Console.WriteLine(createInstance(2).Name);
126
124
 
127
125
  }
128
126
 
129
127
 
130
128
 
131
- public static MonsterBase createMonster(int monsterId)
129
+ public static ClassBase createInstance(int num)
132
130
 
133
131
  {
134
132
 
135
- switch (monsterId)
133
+ switch (num)
136
134
 
137
135
  {
138
136
 
139
137
  case 1:
140
138
 
141
- return new Monster1();
139
+ return new Class1();
142
140
 
143
141
 
144
142
 
145
143
  case 2:
146
144
 
147
- return new Monster2();
145
+ return new Class2();
148
146
 
149
147
 
150
148
 
@@ -160,7 +158,7 @@
160
158
 
161
159
 
162
160
 
163
- abstract class MonsterBase
161
+ abstract class ClassBase
164
162
 
165
163
  {
166
164
 
@@ -170,25 +168,25 @@
170
168
 
171
169
 
172
170
 
173
- class Monster1 : MonsterBase
171
+ class Class1 : ClassBase
174
-
172
+
175
- {
173
+ {
176
-
174
+
177
- public override string Name
175
+ public override string Name
178
-
176
+
179
- => "モンター1";
177
+ => "クラス1";
180
-
178
+
181
- }
179
+ }
182
-
183
-
184
-
180
+
181
+
182
+
185
- class Monster2 : MonsterBase
183
+ class Class2 : ClassrBase
186
-
184
+
187
- {
185
+ {
188
-
186
+
189
- public override string Name
187
+ public override string Name
190
-
188
+
191
- => "モンター2";
189
+ => "クラス2";
192
190
 
193
191
  }
194
192
 
@@ -200,9 +198,9 @@
200
198
 
201
199
 
202
200
 
203
- コード1中のProgram::createMonster
201
+ コード1中のProgram::createInstanceは
204
-
202
+
205
- MonsterBaseの派生クラスの数がどれだけ増えても1行、
203
+ ClassBaseの派生クラスの数がどれだけ増えても1行、
206
204
 
207
205
  例外を対処するコードを入れたとしても
208
206
 
@@ -210,19 +208,19 @@
210
208
 
211
209
 
212
210
 
213
- それに対して、コード2中のProgram::createMonster
211
+ それに対して、コード2中のProgram::createInstanceは
214
-
212
+
215
- MonsterBaseの派生クラスの数が増えれば増えるほど
213
+ ClassBaseの派生クラスの数が増えれば増えるほど
216
214
 
217
215
  コードが長くなります。
218
216
 
219
217
 
220
218
 
221
- たとえば Monster1 から Monster718 までクラスがあるとすると
219
+ たとえば Class1 から Class718 までクラスがあるとすると
222
220
 
223
221
  コード2の書き方でいけば
224
222
 
225
- Program::createMonsterは2159行にもなることが予想されます。
223
+ Program::createInstanceは2159行にもなることが予想されます。
226
224
 
227
225
 
228
226
 

1

なんとなく

2016/05/21 14:17

投稿

aridai1221
aridai1221

スコア45

test CHANGED
File without changes
test CHANGED
@@ -220,7 +220,7 @@
220
220
 
221
221
  たとえば Monster1 から Monster718 までクラスがあるとすると
222
222
 
223
- コード2 の書き方でいけば
223
+ コード2の書き方でいけば
224
224
 
225
225
  Program::createMonsterは2159行にもなることが予想されます。
226
226