私は主にC++のコーダーで、数年後にはC#に触れていませんでした(私の場合は脳のおならかもしれない質問をしていれば私を許してください) 。C++のプログラマーのためのC#でのポインタ代替
背景情報: 私は(ちょうど楽しみのために、そして自分のコンピュータ上の重複をクリーンアップを助けるために)ユーティリティを整理するファイルを書いています。私はファイルとファイルのMD5チェックサムを実行して、さまざまなサブディレクトリで重複したファイルを見つけることができました。同じファイル名でも時々同じファイルタイプであることもあります。私は最初に、 "MainFrom"のコードの背後にあるファイルパス文字列とWinformオブジェクト、Arraylist、Arraysをコンセプトの証明として使用してこれを行いました。コードは本当に醜いですし、私はすでにそれを見て混乱しているので、間違いなく維持することはできません。
ファイルパス、ファイル名、MD5、ファイルタイプなどの単純なものを持つオブジェクトとして、よりエレガントで賢明なデザインを保存すると思いました(はい、私はFILEについて知っています)。それで、もしそれが "重複"、 "似ている"オブジェクトの他のインスタンスへの参照を持っていれば、それは意味をなさないと思った。 私は、重複オブジェクトを指すオブジェクトの一部であるポインタの配列を作成しようとしています。そうすれば、実行時にすべての重複を調べ、プロパティなどを把握することができます。
私はこのクラスから、mp3ファイルやjpgファイルなどの特定のファイルタイプについて後で継承することを計画していました。例:どちらの画像を単にサイズ変更してお互いにポイントさせるかを特定できます)。 しかし、C#にはポインタがありません。私は代議員を見ていましたが、もう一度、それは本当に私が望むものではありません。
私のジレンマ: C#はマネージドコードにポインタを持っていません(絶対に必要な場合を除き、アンマネージドセクションは使用したくありません)。
私は、arraylistのようなものを作成し、実行時に "オブジェクト"を渡すことも考えました。しかし、それは重複を作成しないのですか?それは本当に新しいオブジェクトへの参照ではないですか?
C++からC#への移行を私がこれを超えてどのように動かすかについてのアドバイスを本当にありがとうと思います。私が完全にここで間違ったデザインに近づいている場合は、私に知らせてください。 (私はそれらが両方ともオブジェクト指向であると仮定しています。そのようなデザインは両方の世界で動作します)。
(私がC#でコーディングしようとしている最初のC++コーダーではないので)助けてくれる他のソースへの参照に本当に感謝します。前もって感謝します!
する必要がありますあなたは私の一日行わ:)「のコードは本当に醜いですし、私はすでにそれを見て混乱している "私の上司が今まで言っているものです計算の問題への彼のアプローチを示す前にy時間: – Matten
'class'で宣言された型は参照型です。その型の変数/ fields/...はすでに参照となります。そのような参照の多くは、すべて同じオブジェクトを参照できます。したがって、interopの外側では、ポインタは必要ありません。 – Richard
本当に本が必要なようですね。私はあなたの質問が何であるか完全にはわかっていません - あなたはポインタが必要だと思いますか? –