2016-05-20 5 views
1

基本的には、私はペアに分割したデータの配列を持っています。この場合、文字列firstTickerと文字列secondTicker。私は 'firstTicker'と 'secondTicker'のインスタンスを使用する別のクラスで仕事をしたいと思います。外部にアクセスできるようにこれらの文字列を宣言する方法はありますか?配列内の変数(foreachループ内)を別のクラスでアクセスするにはどうすればいいですか?

static void Main(string[] args)  
{ 
    string _myPairList = GlobalVar.GlobalString; 

    //For reference: _myPairList="Joe,Brown;Bill,Lowry;Sara,Moncton" 

    string[] pairListArray = _myPairList.Split(';');  

    foreach (string tickerPair in pairListArray)   
    { 
     string[] tickerPairDualArray = tickerPair.Split(','); 

     // Command: I'd like to run a job in a seperate class with the two seperated 
     // tickers as variables for each set. (i.e. 'Joe' and 'Brown', 
     // 'Bill' and 'Lowry', 'Sara' and 'Moncton' are all run in the 
     // same program with the respective variables 

     string firstTicker = tickerPairDualArray[0]; 
     string secondTicker = tickerPairDualArray[1]; 
    }   

    Console.ReadLine(); 
} 
+0

文字列を他のクラスのメソッドに渡すことはできませんか? – evanb

+0

これは問題ありません。クラスコードとそのアクセス方法を教えてください。 – kizeloo

+0

あなたのデータを別のクラスに渡そうとしているのですか、他のクラスが本質的にこれをポーリングしていますか?前者では、単純に値を渡すことができます。後者では、tickerFieldsをプロパティとして宣言し、ポーリングクラスが購読するイベントを追加し、ループが繰り返されるたびに呼び出すことができます。 – Travis

答えて

1

はい、あなたが書いた他のクラスでは、コンストラクタまたはメソッドに文字列パラメータを渡します。 Mainメソッドでこれらの文字列を処理する場合は、YourMethod(firstTicker, secondTicker);を呼び出すか、クラスのデータに追加する場合はMyClass obj = new MyClass(firstTicker, secondTicker);とします。

1

あなたが望む機能を持つ別のクラスに電話したいなら、Jeremyの答えは良いはずです。

ループに別のクラスの任意のコードを添付したい場合は、イベントが有効な方法です。おそらく、その後、あなたの他のクラスでは、どこかにコード内のイベントをサブスクライブ

public static event EventHandler<TickerEventArgs> TickerLoopIterated; 

private static void InvokeTickerLoopEvent(string firstTicker, string secondTicker) 
{ 
    if (null != TickerLoopIterated) 
    { 
     var args = new TickerEventArgs() { FirstTicker = firstTicker, SecondTicker = secondTicker }; 
     TickerLoopIterated(this, args); 
    } 
} 

public class TickerEventArgs : EventArgs 
{ 
    public string FirstTicker { get; set; } 
    public string SecondTicker { get; set; } 
} 

そして、あなたの値は

InvokeTickerLoopEvent(firstTicker, secondTicker); 

準備ができているときに、ループ内でそれを呼び出す:あなたのコードに次のようなものを追加します。初期段階では、そのような:そのクラスの

NameOfTheClassWithYourTickerLoop.TickerLoopIterated += SomeCodeIWantToExecute; 

、他の場所:

private void SomeCodeIWantToExecute(object sender, TickerEventArgs args) 
{ 
    //Your code here 
} 

あなたの例がpublic static void mainメソッドにあるため、イベントは静的であることに注意してください。その悪い少年をオブジェクトクラスに投げ、インスタンスイベントを使うことができます。

関連する問題