从Main调用方法返回值C#

时间:2014-09-28 14:57:44

标签: c# methods

我正在尝试在DisplayResults,GetLength,DeterminePrice和DetermineSale的命令行中显示值

我在Main()文件上遇到错误。

第一档:

//Alma Villasenor

using System;

namespace Assingment3
{
    class Info
    {

        public void DisplayInfo()
        {
            System.Console.WriteLine("Alma Villasenor");
            System.Console.WriteLine("C#");
            System.Console.WriteLine("Judith L");
            System.Console.WriteLine("Assignment3A");
            System.Console.WriteLine(System.DateTime.Now.ToLongDateString());
        }
    }
}

第二档

//Alma Villasenor
using System;

namespace Assignment3
{
    class MathOperations
    {
        public double DisplayResults(int avalue, int bvalue)
        {

            avalue = 50;

            bvalue = 51;

            double Results = (avalue + bvalue);

            return Results;

        }

        public double GetLength(int cvalue, int dvalue)
        {

            cvalue = 25;

            dvalue = 12;

            double Length = (cvalue / dvalue);

            return Length;

        }

        public double GetPrice(int evalue, int fvalue)
        {

            evalue = 100;

            fvalue = 25;

            double Price = (evalue * fvalue);

            return Price;

        }

        public double DetermineSale(int gvalue, int hvalue)
        {

            gvalue = 30;

            hvalue = 4;

            double Sale = (gvalue - hvalue);

            return Sale;



        }



    }
}

第三个文件(我需要调用我的方法/类来显示结果:

//Alma Villasenor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Assingment3
{
    class Program
    {
        public static void Main()
        {
            Info myinfo = new Info();
            myinfo.DisplayInfo();


            Assignment3.MathOperations.DisplayResults();


            Console.ReadLine();
        }
    }
}

任何帮助?

5 个答案:

答案 0 :(得分:2)

首先,如果您没有声明MathOperations类,则需要将方法与DisplayResults一样多地作为 static ,并且因为DisplayResults返回一个布尔值,将其分配给变量或将其显示为的System.Console.WriteLine(MathOperations.DisplayResults());

答案 1 :(得分:0)

Main方法中,您需要创建MathOperations类的实例。然后,您需要向Console写入方法调用的结果。

// Inside Main()
var math = new MathOperations();
Console.WriteLine(math.DisplayResults(a, b));

或者,将MathOperations类中的方法设为静态。

public static double DisplayResults(int avalue, int bvalue)
{
    avalue = 50;
    bvalue = 51;
    double Results = (avalue + bvalue);
    return Results;
}

这将允许您在不创建MathOperations类的实例的情况下调用此方法。

// Inside Main()
Console.WriteLine(MathOperations.DisplayResults(a, b));

答案 2 :(得分:0)

两件事:

首先,当您从Main方法访问时,不允许调用Assignment3.MathOperations.DisplayResults();,这是静态的。 MathOperations类中的DisplayResults()方法不是。要么使方法成为静态,要么创建一个实例并在该实例上调用该方法。

其次,您指定该方法应具有签名:DisplayResults(int avalue, int bvalue)。这意味着您需要使用两个参数(avaluebvalue)调用它,而在没有参数的情况下调用它。

答案 3 :(得分:0)

public static void Main()
{
    Info myinfo = new Info();
    myinfo.DisplayInfo();


    //Assignment3.MathOperations.DisplayResults();
    //you need to create an instance of MathOperations before you can call the
    //non-static DisplayResults() method.
      MathOperations operation = new MathOperations();
    //capture your return value
      double result = operation.DisplayResults(someValue, someOtherValue);
      Console.WriteLine(result);


      Console.ReadLine();
}

如果你真的想使用类名调用DisplayResults(),最好将方法声明为static:

public static double DisplayResults(int avalue, int bvalue)

但是如果你想用它做点什么,请记住捕获你的返回值。

答案 4 :(得分:-1)

问题在于您尝试将DisplayResults用作静态方法。 除非您在第二个文件中将其声明为静态,否则您需要创建类MathOperations的实例。 在这种情况下,您只需使用:

MathOperations ops = new MathOperations();
Console.WriteLine(ops.DisplayResults());

此外,对于第一个文件,如果导入命名空间System(使用System语句),则在调用Console.WriteLine方法时不需要指定它:

using System;

namespace Assingment3
{
    class Info
    {

        public void DisplayInfo()
        {
           Console.WriteLine("Alma Villasenor");
           Console.WriteLine("C#");
           Console.WriteLine("Judith L");
           Console.WriteLine("Assignment3A");
           Console.WriteLine(System.DateTime.Now.ToLongDateString());
        }
    }
}