C# のほうがオンライン サポート (コード例、質問への回答) が充実しており、エンジニアの基盤も強力です。つまり、この特定の状況では、この種の Microsoft API に強く依存するソフトウェア開発についてです。Windows Store は Microsoft の全体的な戦略において非常に重要であり、C# は言語戦略において C++ よりも重要です。したがって、C# は適切に適合します (IMO)。
*編集 (Filip Skakun) 質問を再度開くのは難しいかもしれないので、個別に回答することはできませんが、役立つ可能性のあるこのテキストをすべて入力したので、以下に追加すると思いました:
もちろん、決定するのはあなた次第であり、あなたが何を信じているかによっては、非常に主観的な選択になる可能性があります。メタルと、(少し主観的に) より移植性の高い、既にご存知の C++ です。C++ は、tiobe インデックスに基づく言語のほぼ 2 倍の人気があるため、C++ 開発者を獲得することは、C# 開発者よりも簡単かもしれません。C++/CX は、クロスアセンブリ通信と WinRT ライブラリとの通信にのみ使用する必要があるものですが、それ以外のコーディングは、すべての専門家の推奨事項に基づいて標準 C++ で行う必要があります。また、C++/CX はマネージ言語ではないため、.NET では使用しないことに注意してください。マネージ言語である C++/CLI と構文は非常に似ています。WinRT の良い点は、必要に応じて両方の言語を使用できることです。私はすべての XAML UI、ネットワーク、ビジネス ロジックなどに C# を使用しています。XAML で C# を使用するためのサンプルはたくさんありますが、C++ は WinRT を使用する XAML プラットフォームでのみ使用可能になり、推奨されるようになったため、限られた範囲のものしかありません。一方、DirectX や CPU を集中的に使用するタスクなどの低レベルのタスクについては、C++ を使用します。オープンソースの .NET ラッパーよりも直接 DirectX に関するドキュメントの方が多く、すべてを絞り出したい場合にはパフォーマンスが向上するためです。 CPU の潜在的な電力を使用するか、バッテリーからのエネルギーを最小限に抑えます。XAML で C# を使用するためのサンプルはたくさんありますが、WinRT を使用する XAML プラットフォームでのみ使用可能になり、推奨されるようになったため、C++ のサンプルの範囲は限られています。一方、DirectX や CPU を集中的に使用するタスクなどの低レベルのタスクについては、C++ を使用します。オープンソースの .NET ラッパーよりも直接 DirectX に関するドキュメントの方が多く、すべてを絞り出したい場合にはパフォーマンスが向上するためです。 CPU の潜在的な電力を使用するか、バッテリーからのエネルギーを最小限に抑えます。XAML で C# を使用するためのサンプルはたくさんありますが、WinRT を使用する XAML プラットフォームでのみ使用可能になり、推奨されるようになったため、C++ のサンプルの範囲は限られています。一方、DirectX や CPU を集中的に使用するタスクなどの低レベルのタスクについては、C++ を使用します。オープンソースの .NET ラッパーよりも、直接的な DirectX に関するドキュメントの方が多く、すべてを絞り出したい場合にはパフォーマンスが向上するためです。 CPU の潜在的な電力を使用するか、バッテリーからのエネルギーを最小限に抑えます。
C# は、句読点が少ない C++ よりも少しきれいな言語であり、非同期呼び出しを行う新しい async/await キーワード (Windows 8 アプリで使用する必要があります) がはるかにきれいです。これはマネージ言語でもあるため、ほとんどの場合、メモリが解放されるタイミングやバッファ オーバーランなどを気にする必要はありません。C# コードをデバッグすると、C++ よりも決定論的な結果が得られます (いくつかの C++ コードをデバッグするのに 2 日間費やしましたが、まだ実行していません)。バグを見つけるのにどれだけ進んでいるかわかりません)。デバッグが非常に簡単になるため、レガシー コードの維持も容易になります。
C++ は高速であるため、バッテリーの使用量も少なくて済みます。アプリケーションの起動が速くなり、消費電力が少なくなる可能性があります。すでによく知っている場合は、管理された開発の群衆がアプリを構築するよりも有利な場合があります。ガベージ コレクションを使用しないため、メモリ管理がより決定論的で軽量になり、アニメーションがより滑らかになります。
次に、モチベーション要因もあります。本当に C# を学びたいのであれば、既に知っている言語よりも楽しく、意欲的で生産的な C# を学ぶことができ、別の C++ アプリを書くよりも喜んでより多くの時間を C# の学習に費やすことになるでしょう。
基になる WinRT ライブラリは、使用する言語に関係なく同じですが、.NET ライブラリは .NET コードでのみ使用でき、標準 C++ ライブラリはネイティブ コードでのみ使用できます。
最後に、どのような決定を下したとしても、いつでも両方の言語を混在させることができます。将来コードを保守する人は両方の言語を知る必要がある可能性があり、混合言語プラットフォームは非常に古く、ツールによるサポートがわずかに少ないため、メンテナンスコストが追加される可能性があります (たとえば、マネージド + ネイティブの混合リモートデバッグを行うことはできません)。 )そして潜在的にもっとバグがあります。ただし、前述の理由から、多くの場合、これは非常に良い選択です。