teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/03/29 12:02

投稿

YAmaGNZ
YAmaGNZ

スコア10674

answer CHANGED
@@ -6,4 +6,50 @@
6
6
  set{ _Age = value + 10; }
7
7
  }
8
8
  ```
9
- みたいな感じで
9
+ みたいな感じで
10
+
11
+ ---
12
+ ### 追記
13
+
14
+ _Ageは変数でAgeはプロパティです。
15
+
16
+ また、_Ageを宣言せずにAgeプロパティのみで行いたいということですが
17
+ プログラマにはAgeでしかアクセスできませんので、計算結果を加味してとなると
18
+ 下記のように書くことになります。
19
+ ```C#
20
+ public int Age{
21
+ get{ return Age + 5; }
22
+ set{ Age = value + 10; }
23
+ }
24
+ ```
25
+ この場合、get,setどちらも再帰呼び出しとなり永久ループする形になります。
26
+
27
+ 下記のようにゲッター、セッターを省略して書いた場合ですが
28
+ ```C#
29
+ public int Age{
30
+ get;
31
+ set;
32
+ }
33
+ ```
34
+ コンパイラが自動で下記のようなprivate変数を確保しているような状態となります。
35
+ ```C#
36
+ private int __Age;
37
+ public int Age{
38
+ get{ return __Age;}
39
+ set{ __Age = value;}
40
+ }
41
+ ```
42
+ ようは、自動で確保されるか自分で確保するかの違いですので、無駄に確保するという訳ではありません。
43
+
44
+ また、プロパティにセットした値を編集して返すということ自体なかなかやらないかと思います。
45
+ ```C#
46
+ public int Age{
47
+ get;
48
+ set;
49
+ }
50
+ public int AddAge()
51
+ {
52
+ return Age + 5;
53
+ }
54
+ ```
55
+ みたいな形で、計算用のメソッドを用意するのが一般的な設計だと思います。