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で質問しましょう!
似たような質問が見つかりました
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 統計学 複数の母集団から別の母集団の規模を推定する方法 3 2022/12/28 07:06
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba アプリケーションが立ち上...
-
現在起動中のアプリケーション...
-
VB.NETでフォームアクティブの...
-
自分自身を更新するプログラム
-
httpd.pidって何ですか?
-
OSの”シャットダウン中”のステ...
-
外字文字の登録
-
vb6で異なるのプロジェクト間で...
-
タスクマネージャーの表示が・・
-
C#で共有変数の定義をするには
-
フレームワーク「4.8.1」で、[S...
-
LINUX QTで作成したCSVファイル
-
VB.NETでMessageBoxを表示した...
-
Accessフォームからの外部アプ...
-
Java Web Start アプリケーショ...
-
イラストレーターCS4のシリアル...
-
Console Applicationをタスクト...
-
VBSでのSendKeysでの画面の最小化
-
実行時のコマンドプロンプトを...
-
プログラムの二重起動防止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba アプリケーションが立ち上...
-
VBSでのSendKeysでの画面の最小化
-
コンソールアプリケーションの...
-
フレームワーク「4.8.1」で、[S...
-
WSH(VBScript)でアプリケーショ...
-
Accessフォームからの外部アプ...
-
VB6での二重起動(複数起動)の制...
-
イラストレーターCS4のシリアル...
-
VB.NETでMessageBoxを表示した...
-
Console Applicationをタスクト...
-
Java Web Start アプリケーショ...
-
VB.NETでフォームアクティブの...
-
C#でGUI・CUIの判断する仕方を...
-
vb6で異なるのプロジェクト間で...
-
MFCアプリケーションでの終了コ...
-
pccNTmon.exeとntrtscan.exeの違い
-
自分自身を更新するプログラム
-
excel VBAで、外部アプリケーシ...
-
vcxprojファイルの修正法???
-
実行時のコマンドプロンプトを...
おすすめ情報