1. ホーム
  2. c#

[解決済み] C#の参照とポインタの違いは何ですか?

2023-03-06 12:30:43

質問

C#の参照とポインタの違いがよくわかりません。どちらもメモリ上の場所を指しているのですよね? 私が理解できる唯一の違いは、ポインターがそれほど賢くないこと、ヒープ上の何かを指すことができないこと、ガベージ コレクションの対象外であること、構造体または基本型のみを参照できることです。

私が尋ねる理由の 1 つは、良いプログラマーであるためには、(C から推測して)ポインターをよく理解する必要があるという認識があることです。より高いレベルの言語を学ぶ多くの人々は、このことを見逃しており、したがって、この弱点があります。

ポインタの何がそんなに複雑なのか、私にはわからないのですが?基本的には、メモリ内の場所への参照に過ぎないのではないでしょうか? その場所を返すことができ、その場所のオブジェクトと直接対話することができるのですか?

私は重大な点を見逃したのでしょうか?

どのように解決するのですか?

C#の参照はガベージコレクタによって再配置される可能性がありますが、通常のポインタは静的です。このため fixed キーワードを使用するのはそのためです。

編集部:概念的にはそうですね。多かれ少なかれ同じです。