

C#で共有変数の定義をするには、どうしたらよいでしょうか。具体的には、起動パラメータで、任意の文字列(3~4バイト)を渡して、C#アプリケーションを、起動し、プログラムの任意の場所で、そのパラメータを参照したいと考えています。起動パラメータの受け取りは、できるのですが、そのパラメータを、プログラムのどこからも参照できる領域(ここの定義方法が不明)に格納するには、どうしたらよいでしょうか。(2重起動を許す前提です。実行時に1つの目のプログラムにはパラメータ"XYZ"を渡し、2つ目のプログラムを起動時にはパラメータ"ABCD"を渡し、その値により、プログラムの動作を制御したいと思っています)
Windows-xp visual-studio2008 C#でwindowsアプリケーションを作成しています。
No.2ベストアンサー
- 回答日時:
namespace test1
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
strArg = args[0];
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
// ここに記述
static public string strArg = null;
}
}
メインクラスのメンバーとしてスコープが有効な場所に記述します
ありがとうございました。
うまくいきました。Form1表示ごの他の任意の箇所から、strArgの参照ができることも、確認できました。
No.1
- 回答日時:
C#の起動クラス(標準なら Programクラス)にそのパラメータを記憶しておく変数やアクセスするためのメソッド準備してやればいいでしょう
たとえば
static Public string strArg = null;
などと変数を準備して
Mainメソッドを
static void Main( string[] args )
{
if ( args.Length > 0 )
{
strArg = args[0];
}
Application.Run( new Form1());
}
といった具合にします
アクセス方法は
Program.strArg といった具合に『クラス名.変数名』といった具合に静的オブジェクトのアクセス方法に従います
変数の格納自体をprivate等にするなら Getterメソッドを実装しましょう
この回答への補足
回答ありがとうございます。
static Public string strArg = null;
の文は、ソース中のどこに記述すれば良いでしょうか。
以下が、プロジェクト testでアプリケーションを作成したときの
program.csの内容です。
ここのどの場所にいれても、エラーが発生してしまいます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace test1
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
strArg = args[0];
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時のコマンドプロンプトを...
-
エクセル・アプリケーションエ...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
.NetのBackgroundWorkerクラス...
-
家電製品の電力周波数を変える機械
-
if ( a & b == b )
-
アプリケーションが終了するま...
-
C言語プログラミングで、多項式...
-
C#で通信処理。応答がない場合...
-
マルチスレッドのスレッド数を...
-
PIC mainループについて
-
VBA:CSVファイルの読出し手法...
-
bmp → jpeg への変換
-
.sb3のファイルを.sb2に変換す...
-
常駐するアプリケーションを初...
-
スレッドがサスペンドされてい...
-
InvalidateRectがうまくいかない
-
スレッドの終了を知りたい(Wind...
-
マンセル⇔XYZ,RGB変換式或いは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレームワーク「4.8.1」で、[S...
-
pccNTmon.exeとntrtscan.exeの違い
-
VB.NETで起動させたExcelの多重...
-
コンソールアプリケーションの...
-
C#でGUI・CUIの判断する仕方を...
-
Accessフォームからの外部アプ...
-
VB.NETでMessageBoxを表示した...
-
WSH(VBScript)でアプリケーショ...
-
MFCアプリケーションでの終了コ...
-
他アプリケーションの終了
-
イラストレーターCS4のシリアル...
-
Vba アプリケーションが立ち上...
-
実行時のコマンドプロンプトを...
-
VB6での二重起動(複数起動)の制...
-
OSによるWinExecの動...
-
VBSでのSendKeysでの画面の最小化
-
初回接続の遅い原因について
-
VB.NETでフォームアクティブの...
-
FOM出版の公認テキスト&問題集...
-
JAVA VMの2回目以降の起動が早...
おすすめ情報