それらを使用する理由は何でしょうか?
リソースファイルを使用すると、ユーザーのロケールに基づいて使用する言語resxファイルを自動的に決定することにより、.netアプリケーションをローカライズ/国際化できます。言語を追加するには、別の翻訳済みリソースファイルを追加するだけです。
リソースファイルは、文字列、ファイル、およびスクリプトを格納し、厳密に型指定された方法でそれらを参照するための中心的な場所を提供します(したがって、不適切に参照するとコンパイルが中断します)。
リソースファイルはサテライトアセンブリにコンパイルできるため、すべてを再コンパイルすることなく、運用アプリケーションのリソースを簡単に変更できます。
私が支持した他の答えの補足として、文字列リソースは人間が読めるテキスト用であり、プログラムで使用される定数ではないことを付け加えたいと思います。エラーメッセージ、ボタンラベルなどに最適です。
最終文字列ではなく、非常に多くの場合、最後の瞬間に変数を置換できるようにフォーマット文字列を保存します。この方法の素晴らしい点は、連結とは異なり、言語のワード順序の要件が異なっていても壊れないことです。
リソースファイルを使用すると、プログラム自体のコードを編集せずに、プログラムが表示するテキスト/グラフィックを変更できます。多くの理由から、アプリケーションのロジックの一部ではない変更を加えるために、プログラムのソースコードを編集する必要を避けることが理想的であると考えられることがよくあります。
Resxを使用すると、言語(プログラミング言語ではなく話し言葉)ごとに1つ持つことができ、プログラム/システムを多言語に対応できます。
上記の回答に加えて、リソースファイルは、読み取り/書き込みテストを実行するためのテストファイルを保存する場所を提供することもできます。そうすれば、他の人の環境がどのように設定されているかに関係なく、ログやその他のファイルを保存する場所を確保できます。
リソースに配置するファイルは、シリアル化可能でなければならないことに注意してください。詳細については、以下を確認してください。
https://msdn.Microsoft.com/en-us/library/f45fce5x(v = vs.80).aspx