在另一种方法中使用Main方法中的变量

时间:2014-08-20 06:27:24

标签: c# variables methods main

我目前正在完成一项任务,只是希望得到一些帮助。对于我的代码,我必须从值数组中找到最低和最高值,然后将那些不是最高或最低的值加在一起(例如,1,2,3,4,5 ---我会添加2+ 3 + 4)

所以我认为最好的方法是迭代数组并记录最高/最低值的存储位置。这是我的问题,数组存储在Main方法中,我还没有找到一种方法来访问另一种方法。到目前为止我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Scoring {
class Program {   
    static void Main(string[] args) {
        int[] scores = { 4, 7, 9, 3, 8, 6 };

        find_Low();

        ExitProgram();
    }

    static int find_Low() {
        int low = int.MaxValue;
        int low_index = -1;


        foreach (int i in scores) {

            if (scores[i] < low) {
                low = scores[i];
                low_index = i;

            }                
        }

        Console.WriteLine(low);
        Console.WriteLine(low_index);
        return low;  
    }

    static void ExitProgram() {
        Console.Write("\n\nPress any key to exit program: ");
        Console.ReadKey();
    }//end ExitProgram
}

}

我得到的错误是“当前上下文中不存在名称'得分'。非常感谢任何提示/帮助。

3 个答案:

答案 0 :(得分:3)

为了让它尽可能简单,请像这样更改您的程序

class Program {

    static int[] scores = { 4, 7, 9, 3, 8, 6 };

    static void Main(string[] args) { ...}
}

答案 1 :(得分:1)

将数组作为参数传递:

static int find_Low(int[] scores) { 
     //your code
    }

在MainMethod中:

static void Main(string[] args) {
    int[] scores = { 4, 7, 9, 3, 8, 6 };

    find_Low(scores);    //pass array

    ExitProgram();
}

答案 2 :(得分:0)

您可以将数组作为参数传递给函数:

using System.IO;
using System.Linq;
using System;

class Program
{
    static void Main()
    {
        int[] scores = { 4, 7, 9, 3, 8, 6 };
        Console.WriteLine(resoult(scores));
    }

    static int resoult(int[] pScores)
    {
        return pScores.Sum() - pScores.Max() - pScores.Min();
    }
}