为什么是程序跳过方法?

时间:2011-10-30 23:50:39

标签: c# methods

我是C#的初学者,我正在研究这个程序,包括4个方法,包括Main()。 GetValues()允许用户输入数组,FindAverage()计算数组的平均值,现在我想创建一个应该显示结果的第三个方法'Show()'。 当我在Main()中显示平均值时,我得到了这个工作,但是当我在Show()中显示时,没有任何反应。在测试时,我让Show()显示一个简单的文本行“message”,但是当我运行它时。好像程序跳过Show()并直接进入Main()。你们有什么人可以向我解释发生了什么以及我该怎么办Show()显示它的内容?

谢谢你们!

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

namespace testscores
{
    class Program
    {        
        private static int GetValues()
        {

            string inValue;
            int[] score = new int[5];
            int total = 0;


            for (int i = 0; i < score.Length; i++)
            {
                Console.Write("Enter Value {0}: ", i + 1);
                inValue = Console.ReadLine();
                score[i] = Convert.ToInt32(inValue);

            }

            for (int i = 0; i < score.Length; i++)
            {
                total += score[i];

            }
            return total;

        }



        //FIND AVERAGE
        private static double FindAverage()
        {
            double total = GetValues();
            double average = total/5.0;

            return average ;
        } 


         //Show

        static void Show()
        {
            Console.WriteLine("message");
            return;
        }


        static void Main()
        {
             double avg = FindAverage();

             Console.WriteLine("The Average is :" + avg);
            Console.ReadKey();
        }


    }
}

5 个答案:

答案 0 :(得分:4)

独立exe的入口点已定义Main(...) - 是调用Main的原因。静态Main方法(具有各种可用签名)是特殊

对于其他任何事情:你需要打电话,否则就不会发生。

有关信息,您可以使用多个此类Main方法,但是您需要明确告诉它哪一个(并且只有一个)是入口点。

答案 1 :(得分:1)

修改Show,使其获取一个参数(要显示的值)并在Main中调用它:

static void Show(double average)
{
    Console.WriteLine("The average is: {0}", average);
}

static void Main()
{
    double avg = FindAverage();
    Show(avg);
    Console.ReadKey();
}

答案 2 :(得分:1)

当您运行C#程序时,.Net将调用Main()方法 它不会调用任何其他方法。

要执行其他方法,您需要从Main()调用它们(可能是间接的)。

答案 3 :(得分:1)

程序不会运行您键入的所有代码。它们在Main内执行每个语句,并且每个方法中的每个语句都由 Main调用

Main方法中,您可以调用程序的其他部分:

  • FindAverage

FindAverage方法中,您可以调用其他部分:

  • 的GetValues

GetValues方法中,您不会调用程序的任何其他部分。

在这个链中没有任何地方你专门调用Show,所以它永远不会被调用。它只是位于.exe文件中,什么都不做。

这称为死代码。这不是什么大问题,但听起来并不是你想要的。

要解决此问题,请将此行添加到代码中的某个位置,无论您希望在程序的流程中运行它,都可以运行:

Show();

答案 4 :(得分:1)

每个程序仅从方法Main开始。你不能说 程序将从方法Show开始。将Show方法调用放在Main

另外,对你来说似乎有些新鲜事:

要为方法赋值,请在启动方法时添加它。例如:

static void Show(double value){

}

然后致电:

Show(avg); // Gives the variable "avg" to Show