回答編集履歴

1

回答の途中がなぜか消えていたので追記

2021/06/17 05:32

投稿

nobkz
nobkz

スコア320

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- ```
17
+ ```cs
18
18
 
19
19
  class A {
20
20
 
@@ -30,9 +30,57 @@
30
30
 
31
31
 
32
32
 
33
+ とa()の定義中にa()が呼び出されていて、自分自身と同じメソッドだからこそ再帰になりえるわけです。
33
34
 
34
35
 
35
36
 
37
+ ```cs
38
+
39
+ class Sample {
40
+
41
+ static void Main(){
42
+
43
+ new Sample();
44
+
45
+ }
46
+
47
+ }
48
+
49
+ ```
50
+
51
+
52
+
53
+
54
+
55
+ という形です。つまりMain()というメソッドの定義中に、Sample()というコンストラクタ(これも特殊なメソッドです)が呼び出されていて、つまり異なるメソッドを呼び出しているからこそ、再帰にならないわけです。
56
+
57
+
58
+
59
+ 注意しておきたいのが、Sample()の定義は省略されているということです。つまりSample()はSample()と別の場所で定義されています。つまりこういうことです。
60
+
61
+
62
+
63
+ ```cs
64
+
65
+ class Sample {
66
+
67
+ public Sample(){
68
+
69
+ }
70
+
71
+ static void Main(){
72
+
73
+ new Sample();
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+ このことからも、Main()とSample()が異なるメソッドだということが分かります。
82
+
83
+ また、class Sample{ }と、public Sample(){ }自体も混同してる可能性があるので、これらも確り区別して考えてください。
36
84
 
37
85
 
38
86