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

回答編集履歴

1

追記

2017/03/17 00:12

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -8,4 +8,14 @@
8
8
  以上のように result の参照を渡すことによって result の値を書き換えることができます。この場合 result は値型ですが、値型であろうと参照型であろうと関係ありません。参照型を通常の方法で渡した場合にはプロパティの変更はできますがそれを入れている変数の中身の変更はできません。
9
9
  このことから、C# では参照渡しと値渡しが明確に区別され、参照型や値型の区別とは無関係であることがわかると思います。同じライブラリを使っている VB.NET でも同様です。
10
10
 
11
- この概念がそもそもない言語において、しかも参照型と値型の区別もあいまいな人にこのことを教える必要性はないと思いますし、それどころかいたずらに混乱を招くだけだと思います。
11
+ この概念がそもそもない言語において、しかも参照型と値型の区別もあいまいな人にこのことを教える必要性はないと思いますし、それどころかいたずらに混乱を招くだけだと思います。
12
+
13
+ 追記
14
+
15
+ 「参照呼び」という名前ですが、どの程度使われている言葉なのかは知りませんが、私は違和感を覚えます。呼ばれているのはメソッドであってパラメーターではありません。パラメーターは渡されるものです。
16
+ たとえば次のようなコード
17
+ ```C#
18
+ int result;
19
+ DoSomething(out result, 100);
20
+ ```
21
+ この場合、result は参照渡しされていますが、100 は値渡しされています。これを参照呼びと言うなら、値渡しされている 100 の立場はどうなるのでしょうか?