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も見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォーム間でのオブジェクト又は値の共有
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSでのSendKeysでの画面の最小化
-
エクセル・アプリケーションエ...
-
【VC++6.0】外部exeを2つだけ起...
-
フレームワーク「4.8.1」で、[S...
-
外部アプリケーションをマクロ...
-
すでに起動されているプログラ...
-
Windowsプログラムのビジー状態...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
C# シリアル通信でデータ受信...
-
UWSCがうまく動かない
-
このレジの並び方は間違ってま...
-
マージャンのゲームを作りたい...
-
プロセス終了の検知について
-
VBA kernel32 の意味
-
Arduinoのプログラムで質問です。
-
家電製品の電力周波数を変える機械
-
isoをimgに変換したいのですが...
-
c++からfortranの関数を呼び出す
-
Mac 乗数の入力方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSでのSendKeysでの画面の最小化
-
コンソールアプリケーションの...
-
Vba アプリケーションが立ち上...
-
Accessフォームからの外部アプ...
-
VB.NETでMessageBoxを表示した...
-
フレームワーク「4.8.1」で、[S...
-
初回接続の遅い原因について
-
イラストレーターCS4のシリアル...
-
MFCアプリケーションでの終了コ...
-
現在起動中のアプリケーション...
-
VB6での二重起動(複数起動)の制...
-
実行時のコマンドプロンプトを...
-
自分自身を更新するプログラム
-
C#でGUI・CUIの判断する仕方を...
-
vb.net2003での二重起動防止に...
-
VB.NETでフォームアクティブの...
-
VB6の強制終了について
-
vcxprojファイルの修正法???
-
vb6で異なるのプロジェクト間で...
-
pccNTmon.exeとntrtscan.exeの違い
おすすめ情報