回答編集履歴

2

追記

2019/05/17 09:41

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -91,3 +91,93 @@
91
91
  }
92
92
 
93
93
  ```
94
+
95
+
96
+
97
+ # 追記
98
+
99
+
100
+
101
+ また、元の書き方に従えばこのようになります。
102
+
103
+
104
+
105
+ ```C#
106
+
107
+ using System;
108
+
109
+
110
+
111
+ namespace ConsoleApp1
112
+
113
+ {
114
+
115
+ class Program
116
+
117
+ {
118
+
119
+ static void Main(string[] args)
120
+
121
+ {
122
+
123
+ var class1 = new Class1()
124
+
125
+ {
126
+
127
+ A = 100
128
+
129
+ };
130
+
131
+ var class2 = new Class1.Class2(class1);
132
+
133
+ class2.Func1();
134
+
135
+ Console.ReadKey();
136
+
137
+ }
138
+
139
+ }
140
+
141
+
142
+
143
+ public class Class1
144
+
145
+ {
146
+
147
+ public int A { get; set; }
148
+
149
+
150
+
151
+ public class Class2
152
+
153
+ {
154
+
155
+ public Class2(Class1 owner)
156
+
157
+ {
158
+
159
+ Owner = owner;
160
+
161
+ }
162
+
163
+
164
+
165
+ public Class1 Owner { get; }
166
+
167
+
168
+
169
+ public void Func1()
170
+
171
+ {
172
+
173
+ Console.WriteLine(Owner.A);
174
+
175
+ }
176
+
177
+ }
178
+
179
+ }
180
+
181
+ }
182
+
183
+ ```

1

追記

2019/05/17 09:41

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -1,3 +1,93 @@
1
1
  a はインスタンスメンバーなのでインスタンスが無いとアクセスできません。
2
2
 
3
3
  Class2 を作成するときに Class1 のインスタンスを渡してそれを保持するようにしてください。
4
+
5
+
6
+
7
+ #追記
8
+
9
+
10
+
11
+ C# ではメソッドの中でクラスを拡張することができないので、次のようになります。
12
+
13
+ 実行してみるとわかりますが、this はあくまで MainActivity を差します。
14
+
15
+
16
+
17
+ ```C#
18
+
19
+ using System;
20
+
21
+
22
+
23
+ namespace ConsoleApp1
24
+
25
+ {
26
+
27
+ class Program
28
+
29
+ {
30
+
31
+ static void Main(string[] args)
32
+
33
+ {
34
+
35
+ var mainActivity = new MainActivity()
36
+
37
+ {
38
+
39
+ A = 200
40
+
41
+ };
42
+
43
+ mainActivity.CreateOnClickListenerForWeb("URL").OnClick(100);
44
+
45
+ Console.ReadKey();
46
+
47
+ }
48
+
49
+ }
50
+
51
+
52
+
53
+ public class MainActivity
54
+
55
+ {
56
+
57
+ public int A { get; set; }
58
+
59
+ public OnClickListener CreateOnClickListenerForWeb(string url)
60
+
61
+ {
62
+
63
+ return new OnClickListener()
64
+
65
+ {
66
+
67
+ OnClick = v =>
68
+
69
+ {
70
+
71
+ Console.WriteLine($"thisClass: {this.GetType().Name}, v: {v}, A: {A}");
72
+
73
+ }
74
+
75
+ };
76
+
77
+ }
78
+
79
+
80
+
81
+ public class OnClickListener
82
+
83
+ {
84
+
85
+ public Action<int> OnClick { get; set; }
86
+
87
+ }
88
+
89
+ }
90
+
91
+ }
92
+
93
+ ```