dポイントプレゼントキャンペーン実施中!

C#で共有変数の定義をするには、どうしたらよいでしょうか。具体的には、起動パラメータで、任意の文字列(3~4バイト)を渡して、C#アプリケーションを、起動し、プログラムの任意の場所で、そのパラメータを参照したいと考えています。起動パラメータの受け取りは、できるのですが、そのパラメータを、プログラムのどこからも参照できる領域(ここの定義方法が不明)に格納するには、どうしたらよいでしょうか。(2重起動を許す前提です。実行時に1つの目のプログラムにはパラメータ"XYZ"を渡し、2つ目のプログラムを起動時にはパラメータ"ABCD"を渡し、その値により、プログラムの動作を制御したいと思っています)
Windows-xp visual-studio2008 C#でwindowsアプリケーションを作成しています。

A 回答 (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;
  }
}

メインクラスのメンバーとしてスコープが有効な場所に記述します
    • good
    • 2
この回答へのお礼

ありがとうございました。
うまくいきました。Form1表示ごの他の任意の箇所から、strArgの参照ができることも、確認できました。

お礼日時:2009/02/23 11:17

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());
}
}
}

補足日時:2009/02/23 10:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!