2011-01-19 26 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」的成員或屬性? – 2011-01-19 19:05:12

+0

它看起來不像你的代碼甚至可以編譯。你試圖解決的問題究竟是什麼?你通常使用哪種語言? – 2011-01-19 19:06:21

+0

JB沒有屬性是prevAUD/USD prevUSD/CHF等和str [] = str [0] =「AUD/USD」等 – CraigJSte 2011-01-19 19:12:03

回答

0

爲什麼不使用Dictionary<string, object>? 您可以訪問Keys屬性以遍歷鍵。

編輯 基於您的評論:

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

嗯,你可以做到以下幾點:

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

但是我沒有那個就是你要找什麼,因爲那樣會(一般)只是給你的類型名稱。如果你有過類的控制,這將是該數組中,你可以覆蓋對象的ToString和現在任何你想要的:

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

但是如果你不這樣做的話,我可以建議的唯一事情就是也許是一個序列化器。但即使如此,這個對象必須支持的東西。除此之外,您可以反映這些屬性並以字符串格式表示它們。

這是你在找什麼?

+0

這不會起作用,它與我有以上...我試圖引用全局數組的類屬性 – CraigJSte 2011-01-19 19:14:19

1

你的問題不清楚,但它看起來像你試圖創建一個存儲對象的集合,並由一個字符串鍵索引。

有幾個不同的.NET類可以幫助你。最常見的可能是System.Collections.Specialized.NameValueCollectionSystem.Collections.Generic.Dictionary。如果您收藏的物品都是同一類型的,我會推薦Dictionary。如果它們可以有很多不同的類型,那麼你可以仔細看看NameValueCollection