投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/5/7 16:45:06
> constとapp.configファイルは、どうやって使い分けをおこなえば良いのでしょうか。

My Project の[設定]に記述した設定は、その初期値が app.config 内に記録され、
それを My.MySettings (もしくは、My.Settings.Default)経由で受け取ることができますよね。

この app.config による設定というのは、VB6 でいうところの
 ・ ini ファイル
 ・ SaveSetting ステートメント/DeleteSetting ステートメント
 ・ GetSetting 関数/GetAllSettings 関数
などに相当する物と考えると分かりやすいのではないでしょうか。
(実際にはもっと高機能ですが)


スコープを[アプリケーション]にした設定項目は、基本的に読み取り専用です。
XML ファイルを直接書き換えてリロードしたり、あるいは
System.Configuration.ConfigurationManager.AppSettings(key) 経由で
同じ値が保持されます。データベースの接続文字列などが保存されることもあります。

一方、[ユーザー]スコープの項目は、実行時に編集可能な項目となりますが、
この設定は Windows にログオンしているユーザーごとに個別で保持されます。


この他、プロパティへのバインディングといった機能もあります。
http://dobon.net/vb/dotnet/programing/dynamicproperties.html

また、System.Configuration.ConfigurationSettings.AppSettings 経由で
利用する手法もあります。
http://dobon.net/vb/dotnet/programing/appconfigfile.html


さらに、app.config の機能は文字列等の保持だけに留まりません。たとえば VB6 の
 ・ App.LogEvent メソッド
 ・ App.StartLogging メソッド/LogModeプロパティ/LogPathプロパティ
に相当する機能として、「My.Application.Log」によるログ出力機能がありますが、
このログの出力方法を制御する目的にも app.config を利用することができます。
http://dobon.net/vb/dotnet/programing/myapplicationlog.html



> 今回の文言のような定数宣言は、constでおこなった方が良いのでしょうか。

VB6 の付属サンプル "ATM.VBP" のように、「リソース」を使う方法もありますね。
実際、.NET のエラーメッセージなどはリソースで管理されています。

リソースにもいくつか種類があり、EXE 内に埋め込まれるリソースのほか、
フォーム単位のもの、外部ファイルで保持されるものなどがあります。
(ちなみに、VB6 のリソースは、Win32リソースと呼ばれることがあります)
http://www.atmarkit.co.jp/fdotnet/dotnettips/214resources1/resources1.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html


この他、文言管理のためにテキストを別ファイルで配置しておくとか、
別途データベース等で管理する方法などもあります。
そのアプリケーションにとって、都合の良い方法をお好みで選んでみてください。



> それぞれのメリット、デメリットなども踏まえてアドバイスをいただけるとうれしいです。

Const の場合、文言を変えるには再コンパイルが必要になります。アプリケーションによっては
その方が良いという場合もあれば、再コンパイルは面倒だという場合もあるでしょうね。
(外部リソースにすると、ユーザーが勝手に編集して情報を破損させてしまう危険性があるなど)