【问题标题】:Sending Across The Value Of Array List To Another Function Belonging To A Different Class将数组列表的值发送到属于不同类的另一个函数
【发布时间】:2013-09-12 21:46:58
【问题描述】:
class Calculate
{
     public void extract(// code to get the values of  array list)
     {
            if ( numbers < Greatest)
            {
                  list.remove(0);
            }
     }
}
class MainClass
{
   public static void Main()
   {
         int[] numbers = new int[] {1, 2, 3, 4, 5 }// modifying the value; 
         numbers = list.ToArray(typeof(int)) as int
         ArrayList list = new ArrayList(numbers);
         int Greatest = 6;
   }
}

我想将数组列表值发送到提取函数的参数。 减去一个元素后,我希望它也反映在我的数字数组中

【问题讨论】:

  • 数组列表? 2013 年?
  • 我不明白。根据您的示例,您想要什么结果?并且请不要再使用ArrayList :) ArrayList 属于 C# 没有泛型的时代。使用List&lt;T&gt; insted。查看stackoverflow.com/questions/725459/…
  • @lazyberezovsky 可能仍会在尚未更新的教材中找到。也许这是家庭作业?
  • 您是否要检查列表的每个元素是否小于 Greatest?像其他人一样,我对你真正在寻找什么感到困惑。如果您想将 ArrayList 作为参数传递,那很简单: public void extract(ArrayList list){...
  • 你更新的 Main() 方法甚至不会编译,你在声明之前引用了列表。

标签: c# .net list generics arraylist


【解决方案1】:

您需要以下声明:

 public void extract(ArrayList list) {

 }

然后调用方法:

Calculate calc = new Calculate();
calc.extract(list);

但是,正如其他人提到的那样,使用 List&lt;T&gt; 而不是 ArrayList。

在本例中,您可以使用List&lt;int&gt;,因为numbers 是整数。您的方法声明可能如下所示:

public void extract(List<int> intList) {

}

同时查看 extract 方法类中的逻辑似乎并不准确。

Greatest 与您认为已声明它的范围不同,您需要在 extract 方法中声明此变量。同样比较numbersgreatest不会比较所有的数字,事实上编译器会抱怨,你需要遍历ArrayList并将每个元素与Greatest进行比较。

public void extract(ArrayList list) {
     int greatest = 6;
     foreach (var item in list) {
         // comparison here
     }
} 

【讨论】:

  • 为什么不直接使用 LINQ 并做numbers.RemoveAll(a =&gt; a &lt; Greatest);
猜你喜欢
  • 2017-08-20
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多