2017-08-11 70 views
1

我在我的C#.Net程序中有一個小問題...我有一個帶有計數值的JSON文件,它指示我將會有多少個值存儲到我的「對象數組」...在讀取該值後,我需要我創建的類的實例來存儲值...問題是...我如何訪問主窗體函數以外的實例使用他們在我的一個事件函數,因爲我不能讓全局實例的類,因爲我的計數器是在函數內部,即使它是全局的我有我的主要形式函數內的其他操作,需要在聲明我的對象後立即執行...我需要訪問主函數以外的類的實例C#

這裏是代碼...

public CurrencyForm() 
    { 
     InitializeComponent(); 
     int count = 0; 
     var request = WebRequest.Create("https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json"); 
     request.ContentType = "application/json; charset=utf-8"; 
     string text; 
     var response = (HttpWebResponse)request.GetResponse(); 
     using (var sr = new StreamReader(response.GetResponseStream())) 
     { 
      text = sr.ReadLine(); 
      while (!text.Contains("count")) 
      { 
       text = sr.ReadLine(); 
      } 
      count = CurrencyUtilities.getCount(text); 
     } 
     Currency[] currency = new Currency[count]; 

     for (int i = 0; i < count; i++) 
      currency[i] = new Currency(); 
     ... 
    } 

private void SelectCurrency1_onItemSelected(object sender, EventArgs e) 
     { 
      if (SelectCurrency1.selectedValue != "USD") 
      { 
       int i = 0; 
       //while (!currency[i].Name.Contains(SelectCurrency1.selectedValue)) 
       // i++; 
      } 
     } 

感謝任何人!

+0

在類範圍中使用列表:'私人列表貨幣=新列表();'。然後,在你的函數中,只需使用列表。請參閱:https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx – NikxDa

+1

爲什麼不使用'Newtonsoft.Json'來爲您解序列化數組?這是現在在c#中的標準方式 –

+0

@NikxDa你說,而不是使用一個對象數組應該使用一個列表並推入我的對象內的權利?我從來沒有使用過一個清單...我要去嘗試 –

回答

1

在這裏您不知道count中的值是否填充,在這種情況下,您應該更喜歡List<T>而不是陣列,並且應該將該變量保留在全局部分中,以便您可以輕鬆訪問它們。

private List<Currency> CurrencyList = new List<Currency>(); 
public CurrencyForm() 
{ 
    // Your logic here 
    while (!text.Contains("count")) 
    { 
     CurrencyList.Add(new Currency()); 
    } 
} 

作爲參考here你可以在有關列表和數組比較發現一些筆記。

+0

它的工作原理!非常感謝你<3 –

+0

@MurtasManuel:很高興聽到這句話,高興地幫助你 –

0

你有兩個選擇:

  1. 在類範圍內使用List<Currency>這將作爲一個長度可變的集合。您可以直接在類作用域中創建它,然後從函數中將它添加到它。 例如:private List<Currency> CurrencyList = new List<Currency>();。然後,您可以通過CurrencyList.Add (item);
  2. 添加到列表中使用你已經使用的陣列,但在類範圍定義,並創建你的函數的實例。然後,從事件函數訪問數組。

我會採用第一種方法,因爲它更簡化。

相關問題