回答編集履歴

1

質問の内容に合わせて、答えを編集しました。

2016/06/11 06:32

投稿

urahimono
urahimono

スコア714

test CHANGED
@@ -1,20 +1,44 @@
1
+ 上のソースコードでは`addInt()`の引数kは値渡しになっているため、kの値を変えても渡したiの値は変更されません。
2
+
3
+ 値渡しと参照については以下のリンクが分かりやすいと思います。
4
+
5
+ [値渡しと参照渡しの違いと使い分け](http://dobon.net/vb/dotnet/beginner/byvalbyref.html)
6
+
7
+
8
+
1
- **add**クラスの`addInt()`の数の宣言で返りでintを返すように宣言する必要あります。
9
+ 今回場合は、`addint()`のkを参照渡しにすることで渡したiの値にも影響があるようにすることできます。
10
+
11
+ C#で参照渡しをする際は**ref**キーワードをつける必要があります。
2
12
 
3
13
 
4
14
 
5
15
  ```
6
16
 
7
- public class add : MonoBehaviour
17
+ public void addint( int i, int j, ref int k )
8
18
 
9
19
  {
10
20
 
11
- public int addint( int i, int j )
21
+ k = i + j;
12
22
 
13
- {
23
+ }
14
24
 
15
- return ( i + j );
25
+ ```
16
26
 
27
+
28
+
29
+ 呼出し元もrefを付けて呼び出す必要があります。
30
+
31
+ ```
32
+
33
+ void Start ()
34
+
17
- }
35
+ {
36
+
37
+ add = GetComponent<add> ();
38
+
39
+ add.addint (1,2,ref i);
40
+
41
+ Debug.Log (i);
18
42
 
19
43
  }
20
44