我需要访问主函数C#之外的类的实例

时间:2017-08-11 11:42:40

标签: c# .net

我的C#.Net程序有一点问题...我有一个带有计数值的JSON文件,它指示我要存储到我的&#34;对象数组中的多少值&#34 ; ...读取该值后,我需要我创建的类的x个实例来存储值...问题是...我如何访问主窗体函数之外的那些实例,以便在我的一个事件中使用它们函数,因为我不能创建类的全局实例导致我的计数器在函数内部,即使它是全局的,我的主表单函数中还有其他操作需要在声明我的对象后立即执行... < / p>

这是代码......

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++;
            }
        }

无论如何,先感谢任何人!

2 个答案:

答案 0 :(得分:1)

count填充之前,您不知道List<T>中的值,在这种情况下,您应该更喜欢private List<Currency> CurrencyList = new List<Currency>(); public CurrencyForm() { // Your logic here while (!text.Contains("count")) { CurrencyList.Add(new Currency()); } } 而不是数组,并且您应该将该变量保留在全局部分中,以便您可以轻松访问它们。

Say, I have a dataframe as below,

>>> df.show()
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   2|null|
|null|   3|null|
|   5|null|null|
+----+----+----+

>>> df1 = df.agg(*[F.count(c).alias(c) for c in df.columns])
>>> df1.show()
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   2|   2|   0|
+----+----+----+

>>> nonNull_cols = [c for c in df1.columns if df1[[c]].first()[c] > 0]
>>> df = df.select(*nonNull_cols)
>>> df.show()
+----+----+
|col1|col2|
+----+----+
|   1|   2|
|null|   3|
|   5|null|
+----+----+

作为参考here,您可以找到有关List和数组比较的几点说明。

答案 1 :(得分:0)

您有两种选择:

  1. 在班级范围内使用List<Currency>这将作为具有可变长度的集合。您可以直接在类范围中创建它,然后从函数中添加元素。 示例:private List<Currency> CurrencyList = new List<Currency>();。然后,您可以通过CurrencyList.Add (item);
  2. 添加到列表中
  3. 使用您正在使用的阵列,但在类范围内定义它并从您的函数创建实例。然后,从事件函数访问该数组。
  4. 我采用第一种方法,因为它更加精简。