回答編集履歴

4

追記を受けて注意事項を追記

2020/11/25 08:33

投稿

Automatic9045
Automatic9045

スコア313

test CHANGED
@@ -1,4 +1,4 @@
1
- ジェネリッククラス(ClassName<T>)を使ってみてはいかがでしょう?
1
+ ジェネリッククラス(`ClassName<T>`)を使ってみてはいかがでしょう?
2
2
 
3
3
  インスタンス化する際に型を指定出来ます。
4
4
 
@@ -49,3 +49,41 @@
49
49
  }
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ ##追記を受けて
56
+
57
+ ジェネリッククラスを用いれば、コンストラクタの引数は不要になります。
58
+
59
+ 型パラメータTの型は`typeof(T)`で取得出来るので、初期化処理は以下のように書けます。
60
+
61
+ ```C#
62
+
63
+ // Linqを用いると、繰り返し系の処理をfor無しで可読性高く書けます。
64
+
65
+ // また、C#では変数名はローワーキャメルが原則なのでご注意を。
66
+
67
+
68
+
69
+ public A()
70
+
71
+ {
72
+
73
+ switch (typeof(T))
74
+
75
+ {
76
+
77
+ case typeof(string):
78
+
79
+ strList = new List<string>(Enumerable.Repeat(string.Empty, listSize));
80
+
81
+ break;
82
+
83
+ ...
84
+
85
+ }
86
+
87
+ }
88
+
89
+ ```

3

サンプルコードにコンストラクタを追加

2020/11/25 08:33

投稿

Automatic9045
Automatic9045

スコア313

test CHANGED
@@ -9,6 +9,16 @@
9
9
  public class MyClass<T>
10
10
 
11
11
  {
12
+
13
+ public MyClass(T arg)
14
+
15
+ {
16
+
17
+ ...
18
+
19
+ }
20
+
21
+
12
22
 
13
23
  public void MyMethod(T arg)
14
24
 
@@ -30,7 +40,7 @@
30
40
 
31
41
  {
32
42
 
33
- MyClass<string> a = new MyClass<string>();
43
+ MyClass<string> a = new MyClass<string>("hoge");
34
44
 
35
45
  a.MyMethod("aaa");
36
46
 

2

staticを書く位置が間違っていたので修正

2020/11/25 07:42

投稿

Automatic9045
Automatic9045

スコア313

test CHANGED
@@ -22,11 +22,11 @@
22
22
 
23
23
 
24
24
 
25
- static class MainClass
25
+ class MainClass
26
26
 
27
27
  {
28
28
 
29
- void Main(string[] args)
29
+ static void Main(string[] args)
30
30
 
31
31
  {
32
32
 

1

サンプルコードを追加

2020/11/25 06:38

投稿

Automatic9045
Automatic9045

スコア313

test CHANGED
@@ -1,3 +1,41 @@
1
- Class<T>の型を使ってみてはいかがでしょう?
1
+ ジェネリッククラス(ClassName<T>を使ってみてはいかがでしょう?
2
2
 
3
3
  インスタンス化する際に型を指定出来ます。
4
+
5
+
6
+
7
+ ```C#
8
+
9
+ public class MyClass<T>
10
+
11
+ {
12
+
13
+ public void MyMethod(T arg)
14
+
15
+ {
16
+
17
+ ...
18
+
19
+ }
20
+
21
+ }
22
+
23
+
24
+
25
+ static class MainClass
26
+
27
+ {
28
+
29
+ void Main(string[] args)
30
+
31
+ {
32
+
33
+ MyClass<string> a = new MyClass<string>();
34
+
35
+ a.MyMethod("aaa");
36
+
37
+ }
38
+
39
+ }
40
+
41
+ ```