一般的にはC#について、特にUnityについてはお勧めしません。
C#では、「安全でないコード」と呼ばれるものに慣れる必要があります。まだ怖い?
Unityでは、安全でないコンパイルモードを有効にする必要があります。そうすることで、予定どおりにWebプレーヤーを使用できなくなります。詳しくはこちらまたはこちらをご覧ください。
したがって、基本的にC#は、多くのスクリプト言語と同様にガベージコレクターで設計されました。一般的な考え方は、メモリ管理の概念を試して抽象化し、開発を簡素化することです。オブジェクトを無効にしないと、リソースリークが発生する可能性があります。私は正直なところ、GCの大規模な支持者ではないため、代わりにRAIIメソッドを使用しますが、これは私たちが住んでいる世界です。
ただし、ほとんどのC ++開発者は、ポインタを直接使用するのではなく、RAIIで設計された型(スマートポインタ)を使用することを推奨することにも同意します。Cランドにいる場合、ポインタは2番目の性質ですが、それでもある程度抽象化するのに役立ちます。
C#でそれらを使用する場合は、セキュリティの脆弱性を追加したり、非常に厄介でバグを追跡するのが非常に難しい可能性があることに注意してください。また、GCによって移動できるオブジェクトを参照しないように注意する必要があることにも留意する必要があります。ここでは、fixedステートメントの使用に注意してください。
Unityでポインターを使用するには、ネイティブプラグインを記述します。これもまた、Webplayerビルドを除外しますが、新しいHTML5機能はemscriptenに基づいて機能するため、使用を計画している場合は、慎重に使用することができます。ネイティブプラグインを使用すると、プラットフォームごとにUnityを拡張できます。たとえばシリアル接続を介して一部のマイクロコントローラーと通信するためのネイティブプラグインを作成しました。
まとめると、UnityのC#でポインターを使用する理由を自問する必要があります。ただ楽しみたいだけなら...ノックアウトしてください。
編集:
GCについての私の考えが今のところ一般的な意見ではないことを知っているので、誰かを気分を害したのは残念です。
本当に私の答えを読んだら、私はC#をスクリプト言語と呼んでいないことに気付くでしょう。「多くのスクリプト言語」と比較しますが、Unityのコンテキストでは、スクリプト言語として非常に使用されています。Unity にとっては、DSLのようなものです。多くの場合、このコンテキストではUnityスクリプトと呼ばれることもあります(これは主に、UnityのC#に代わるJavaScriptを参照しています)。パイプラインにLLVMを配置する場合、プラットフォーム用のネイティブコードに直接コンパイルできます。それを何と呼びますか?だから私はここで髪を分割したくありませんでした。
ソフトウェア工学への多くの素晴らしい参照は意見で満たされます:
効果的なC ++、
より効果的なC ++、
C ++ FAQ、
効果的なC#、
最新のC ++デザイン、
デザインパターン
... 考え抜かれた説明が続いた場合、これが議論の信頼性を低下させるとは思わない。
私はすべてと言って外に本当にありませんでした「DOは、これまでのポインタを使用しないで!!」。実際、私は時々それらを裸で使用します。「C#では安全でないコードよりも安全なコードを使用することをお勧めします」のように「一般的に」と言いました。それが有益である状況があり、それはツールを選択するC#の本当に強力な機能の1つです。C#では、GCプロセスにある程度の透過性を持たせることもできますが、Dartのような言語では、透過性がなく、リソースリークを非常に簡単に引き起こす可能性があります。あなたが小さなプロジェクトの唯一の開発者であるなら、それはおそらく問題ではありません。数十万行のコードを持つ10以上のチームにいる場合は、トリッキーになる可能性があります。
私は単に、裸のポインターを使用するときに読者に注意を払ってほしかった。主電源で作業する場合は、非常に注意が必要であると言えます。電気技師にならないと言っているのではありません。もしあなたが間違った動きをし、あなたが死んでいるという点でそれを扱わない場合に限ります。
私は、パフォーマンスが必要性を決定したかもしれないラッセによって与えられた例が好きです。