2009-06-02 20 views
1

レガシーVC++ 6.0開発者向けに.NETを学ぶためのベストな書籍/アプローチの例を教えてください。私はさまざまな理由でC#やVB.NETのような新しい言語を学ぶことを躊躇しています。私はC++/Win32プログラミングの経験があります。私は、.NET開発の経験を手に入れるためにC++/CLIを学ぶ方向に傾いています。これは良いアプローチですか? .NETの急降下をするために何をしましたか?あなたはC#またはVBを学ばなければなりませんでしたか?私は同じもののために次の本の1つを得ることを計画しています。任意のアイデア/思考?レガシーVC++ 6.0開発者のための.NET

  1. http://www.amazon.com/reader/1430210532?encoding=UTF8&ref=sib_dp_bod_toc&page=5#reader
  2. http://www.amazon.com/Foundations-CLI-Visual-Language-Experts/dp/1430210230/ref=pd_bxgy_b_text_b

答えて

3

あなたのプログラムで.NETを使用したい場合は、おそらく代わりに、C#のを学ぶ方がいいでしょう。 C++/CLIは、マクロやカスタム演算子の定義を通して、まったく新しい言語です。

C++/CLIは、C#/ pinvokeが処理するには複雑すぎるネイティブライブラリの相互運用シナリオに最適です。

のC#にC++から移行することについていくつかの興味深い:

  1. それは、マネージコードですので、あなたのポインタを削除する を持っていません。
  2. C++では、型の宣言方法に応じて、スタック上またはヒープ上で型をインスタンス化することができます。 C#では、型がスタックまたはヒープでインスタンス化されるかどうかは、型宣言の方法ではなく、型自体によって異なります。型がValueTypeから派生した場合、ランタイムは型をスタックにインスタンス化します。型がValueTypeから派生しない場合、ランタイムはヒープ上で型をインスタンス化します。
  3. C++では、構造体とクラスは似ていますが、違いはメンバーのデフォルトの可視性だけです(構造体はデフォルトでpublicであり、クラスはデフォルトでprivateです)。 C#では、構造体はValueTypeであり、継承のないような特別な規則を持っています。
  4. C++では、複数の継承があります。 C#では、単一の継承とインターフェイスから継承する機能があります。 C#のインタフェースは、C++の(本質的に)純粋な抽象型です。

もっと多くの情報がありますが、それは共通の問題点の一部です。詳細はa good articleです

+0

#2は100%真ではありませんが、そこに一般的な考えがあります。 –

+1

ファイナライザとデストラクタはおそらく言及する価値があります。 –

3

C#を恐れることはありません。以前のC++プログラマ(そしてこれが大部分のケースだと思います)として、C#への移行が非常に快適であることがわかりました。あなたの思考方法(もしそうなら)はほんの少しの変更でかなりうまく翻訳されます。言語にはいくつかの癖がありますが、C#1からC#3に移行するにつれて、C++開発者が世界を見る方法(例:ジェネリック)にさらに近づいています。私はvirtual labs on C#をチェックアウトします。彼らはかなりまともですし、すぐにあなたの言語に手をつけましょう。

0

C#でWin32プログラミングよりもC#を学ぶのが楽しいのは、型チェックが非常に強力であることです.C++よりはるかに強力です。ですから、一連のパラメータを持つものを呼び出すとコンパイラは正常になり、正しい型のものであることがわかります。 これはWin32の私にとって大きな闘いでしたが、その闘いを繰り返す必要はありませんでした。

0

あなたが考えている本はあまり良くありません...彼らはあまりにも多くをカバーしようとし、私はあまり役に立たないと思います。

言語の基本的な構文に慣れ親しんでくれる簡単な「C#テキスト操作ハンドブック」があります。繰り返し使用する便利な文字列処理ライブラリを教えてくれます。その後、LINQ(LINQ in Action)のような書籍で通常カバーされる最新の言語機能を教える本を手に入れなければなりません。それらの本はどちらも短くても良いものでいっぱいです。

その後、特定の種類のアプリケーション(WPF、WinForms、ASP.NETなど)に固有の書籍を入手したいと考えています。これには、ADO.NETを使用してそのアプリケーションタイプからデータベースにアクセスすることが含まれます。

私は5年ごとにC/C++ Win32開発を行っていましたが、この時点では私は戻ってくるとは考えません。私は.Netプラットフォームを使用することでこれ以上のことができます。

関連する問題