0

重複の可能性:
配列またはリストは、C# で参照によってデフォルトで渡されますか?

私のマシンでは、ポインターは 32 ビットであるため、クラス オブジェクトを渡す関数は 32 ビット (クラス オブジェクトへの参照であるポインター) を渡します。C シャープの配列について、それらは参照型であり、値渡しであるという矛盾したことをよく耳にします。では、5 つの float の配列を渡す関数がその配列を渡す際に使用するビット数を教えてください。それはポインターのサイズですか、それとも 5 * 32 は 5 つの float のサイズですか?

4

3 に答える 3

2

配列は参照型であるため、すべての値ではなく、参照のみを渡します。

配列を引数として渡す (C# プログラミング ガイド)

配列は、引数としてメソッド パラメーターに渡すことができます。配列は参照型であるため、メソッドは要素の値を変更できます

Jon Skeet によるこの記事が表示される場合があります: C# でのパラメーターの受け渡し

于 2012-09-19T04:16:28.403 に答える
1

すべての配列は参照型です。

MSDNを引用するには:

配列型は、抽象基本型 Array から派生した参照型です。この型は IEnumerable と IEnumerable を実装しているため、C# のすべての配列で foreach 反復を使用できます。

したがって、配列を関数に渡すと参照が渡されます。参照は、配列内の要素の数に関係なく同じサイズになります。あなたの例では、それは32ビットになります。

于 2012-09-19T04:17:08.467 に答える
1

配列は参照型で、各参照は 4 バイト (32 ビット システムの場合) または 8 バイト (64 ビット システムの場合) です。参考までに、サイズについては、その長さに参照サイズを掛けて、クラス定義のオーバーヘッドを追加します(変数の場合は数バイト、メモリ管理の場合は数バイト)。

于 2012-09-19T04:17:19.533 に答える