2011-01-19 6 views
1

配列値と参照クラスオブジェクトを繰り返し処理する必要があります。このようにC#.netでこれを行うにはどうすればいいですか?クラスオブジェクトをC#でStringで参照するにはどうすればよいですか?

(C#)文字列でクラスオブジェクトをどのように参照していますか?すなわち

...

public class GlobalVars 
{ 

    private static Object[] _prevval1; 

    public static Object[] prevval1 
    { 
     get { return _prevval1; } 

     set { _prevval1 = value; } 
    } 
} 



string[] str = new string[]' 
str[0] = "val1"; 

string value = Convert.toString(GlobalVars.prev + str[0] + [0].toString()); 

この(上記の最後の行)が動作しません..私はこれをどのように操作を行いますか?

私はちょうどCASE文を使用しましたが、コメントや提案は歓迎しています....あなたの助けと助言のおかげで。

 string[] curArray = new string[6]; 
     curArray[0] = "AUD/USD"; 
     curArray[1] = "EUR/USD"; 
     curArray[2] = "GBP/USD"; 
     curArray[3] = "USD/CAD"; 
     curArray[4] = "USD/CHF"; 
     curArray[5] = "USD/JPY"; 

     for (int i = 0; i < curArray.Length; i++) 
     { 
      // Get Symbols 
      DataRow dtrow = dt.NewRow(); 
      dtrow["Symbol"] = curArray[i].ToString(); 
      string sym = curArray[i].ToString(); 

      // Get Ask Price 
      string ask = "-"; 
      dtrow["AskPrice"] = ask.ToString(); 

      if (GlobalVars.prevEURUSD != null) 
      { 
       switch (sym) 
       { 
        case "AUD/USD": 
         dtrow["AskPrice"] = GlobalVars.prevAUDUSD[3].ToString(); 
         break; 
        case "EUR/USD": 
         dtrow["AskPrice"] = GlobalVars.prevEURUSD[3].ToString(); 
         break; 
        case "GBP/USD": 
         dtrow["AskPrice"] = GlobalVars.prevGBPUSD[3].ToString(); 
         break; 
        case "USD/CAD": 
         dtrow["AskPrice"] = GlobalVars.prevUSDCAD[3].ToString(); 
         break; 
        case "USD/CHF": 
         dtrow["AskPrice"] = GlobalVars.prevUSDCHF[3].ToString(); 
         break; 
        case "USD/JPY": 
         dtrow["AskPrice"] = GlobalVars.prevUSDJPY[3].ToString(); 
         break; 
       } 
      } 
+0

GlobalVarsは "prev"というメンバーまたはプロパティを定義していますか? –

+0

あなたのコードがコンパイルされるように見えません。あなたが解決しようとしている問題は何ですか?あなたはどんな言語を使っていますか? –

+0

JBいいえプロパティはprevAUD/USD prevUSD/CHFなどでstr [] = str [0] = "AUD/USD"など – CraigJSte

答えて

0

なぜDictionary<string, object>を使用しないのですか? Keysプロパティにアクセスして、キーを反復処理できます。あなたのコメントに基づいて

EDIT

class ProductPriceInfo 
{ 
    public string ID {get;set;} 
    public DateTime PriceTimeStamp {get;set;} 
    public decimal Price {get;set;} 
} 
... 
Dictionary<string, ProductPriceInfo> _prices = new Dictionary<string, ProductPriceInfo>(); 
// Adding a price 
_prices.Add(myProduct.ID, myProduct); 

// updating the price 
if(_prices[myProductv2.ID].PriceTimeStamp < myProductv2.PriceTimeStamp) 
{ 
    _prices[myProductv2.ID].PriceTimeStamp = myProductv2.PriceTimeStamp; 
    _prices[myProductv2.ID].Price = myProductv2.Price; 
} 

だろうと動作しますか?

+0

私はジムの答えに基づいてあなたのコメントを理解すると思う...私はちょうど異なるプロパティを参照するために値のすべての順序を維持する必要があります..(私は思う)。 – CraigJSte

+0

あなたが達成したいことを理解すれば、おそらくあなたのお手伝いがより簡単になります。あなたが書いたコードを忘れて、機能的な観点から達成したいことが何であるか教えてください。 –

+0

私は最後の価格を保持するグローバルアレイに価格データのストリームを格納しています。次に、これらの価格の関数を実行します。それらのすべてをテーブルに格納するには余りにも多く、最後のものしか保持しません。 x秒より古いとそれを格納..しかし、私は上記のように参照しているので、他の関数の最新の価格を使用したい – CraigJSte

0

さて、あなたは次のことを行うことができます:

string value = Convert.toString(GlobalVars.prev.ToString() + str[0]); 

ちょうどあなたのタイプの名前を与える(一般的に)その意志ので、私はそれは、あなたが探しているものだはありません。あなたがその配列になりますクラスを管理している場合は、あなたが好きなオブジェクトと現在のtoStringをオーバーライドすることができます。

override string ToString() 
{ 
     return "MyObject|FirstName:" + this.FirstName + "|LastName:" + this.LastName; // etc. 
} 

しかし、そうでない場合は、私が提案できる唯一のことはあります多分シリアライザ。しかし、それでもオブジェクトがサポートしなければならないことがあります。それを除いて、プロパティを反映させて文字列形式で表現することができます。

これはあなたが探しているものですか?

+0

は動作しません。私は上記の...私はグローバル配列のクラスプロパティを参照しようとしています – CraigJSte

0

GlobalVarsで反射を使用してPropertyInfo(例:http://msdn.microsoft.com/en-us/library/1zkfcy34(v=VS.95).aspx)を取得し、GetMethodで値を取得する必要があります。それほど複雑ではありません。私はネット上に例があると確信しています。 Reflection、PropertyInfo、GetGetMethodを参照してください。

+0

私はこれを調べました。私はまだそれを理解していない、一見して少し複雑です。 – CraigJSte

+0

http://stackoverflow.com/questions/1355090/using-propertyinfo-getvalue実際には答えがあります.. – gbvb

+0

推奨は助けましたか? :) – gbvb

1

あなたの質問は不明ですが、オブジェクトを格納し、文字列キーでインデックスされたコレクションを作成しようとしているようです。

いくつかの.NETクラスがあります。おそらく最も一般的なものはSystem.Collections.Specialized.NameValueCollectionSystem.Collections.Generic.Dictionaryです。あなたのコレクション内のアイテムがすべて同じタイプの場合は、Dictionaryをお勧めします。それらが多くの異なるタイプのものである可能性がある場合は、NameValueCollectionを詳しく見てください。

+0

hmm私は好奇心が強いです...私は文字列の配列であり、データを格納するために使用するオブジェクトを格納するクラスを使用します。これらのクラスのうちの1つが容易であると言っていますか?どのような利点がありますか?私はあなたが何を意味するか分かりません。 – CraigJSte

+0

私はそれを得る..それはFlexのArrayCollectionのようなものだ...だから私はこれがC# – CraigJSte

関連する問題