2016-03-21 20 views
0

私はプログラムを実行するたびに "期待どおり"になるのはなぜですか?私は中括弧がないとは思わない。それは別のものになることができますか?C#の中括弧で値渡しと参照渡し

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      int[] anArray = new int[] {30, 40, 60, 70, 80, 90, 100, 110}; 

      var byVal = anArray[0]; 
      Console.WriteLine("by value: " + byVal); 

      ref int byRef = anArray[0]; 
      Console.WriteLine("by reference: " + byRef); 


     } 
    } 
} 

enter image description here

+0

表示されている正確/完全なエラーを表示できますか? – Castaglia

答えて

1

(それが}に拾っている理由がわからない)あなたのコードを解析するために失敗しています。

これは、あなたがrefとして変数を定義することはできません、無効なC#コード

ref int byRef = anArray[0]; 

です。メソッドにパラメータを渡すときに使用します。たとえば、

5が表示されます。

0

refキーワードの意味を誤解しているように見えます。ローカル変数を参照するのではなく、参照によってパラメータを渡すために使用されます。

C#は、変数にその変数の型に基づいて参照または値を設定することを決定します。プリミティブ型とstructは値型です。したがって、これらの型に対応する変数は値を格納します。一方、クラスは参照型であるため、対応する型の変数には参照が格納されます。