-1

As I'm new to C# I'm trying to make a basic console based calculator. It's getting one error though. Here is my code:

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

namespace FunctionBased_Calculator
{
    class Program
    {
        public void menu()
        {
            Console.Clear();
            Console.WriteLine("-=Calculator=-\n");
            Console.WriteLine("(1.) Addition");
            Console.WriteLine("(2.) Subtraction");
            Console.WriteLine("(3.) Multiplication");
            Console.WriteLine("(4.) Division");
            Console.WriteLine("(5.) Help");
            string answer = Console.ReadLine();
            if (answer == "1")
            {
                addition();
            }
            else
            {
                if (answer == "2")
                {
                    subtraction();
                }
                else
                {
                    if (answer == "3")
                    {
                        multiplication();
                    }
                    else
                    {
                        if (answer == "4")
                        {
                            division();
                        }
                        else
                        {
                            if (answer == "5")
                            {
                                help();
                            }
                            else
                            {
                                Console.WriteLine("Invalid");
                                Console.ReadKey();
                                menu();
                            }
                        }
                    }
                }
            }
        }
        public void addition()
        {
            Console.WriteLine("-=Addition=-\n");
            Console.WriteLine("Number 1:");
            int num1 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Addition=-\n");
            Console.WriteLine("Number 2:");
            int num2 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Addition=-\n");
            int sum = num1 + num2;
            Console.WriteLine(sum);
            Console.ReadKey();
            menu();
        }
        public void subtraction()
        {
            Console.WriteLine("-=Subtraction=-\n");
            Console.WriteLine("Number 1:");
            int num1 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Subtraction=-\n");
            Console.WriteLine("Number 2:");
            int num2 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Subtraction=-\n");
            int sum = num1 - num2;
            Console.WriteLine(sum);
            Console.ReadKey();
            menu();
        }
        public void multiplication()
        {
            Console.WriteLine("-=Multiplication=-\n");
            Console.WriteLine("Number 1:");
            int num1 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Multiplication=-\n");
            Console.WriteLine("Number 2:");
            int num2 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Multiplication=-\n");
            int sum = num1 * num2;
            Console.WriteLine(sum);
            Console.ReadKey();
            menu();
        }
        public void division()
        {
            Console.WriteLine("-=Division=-\n");
            Console.WriteLine("Number 1:");
            int num1 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Division=-\n");
            Console.WriteLine("Number 2:");
            int num2 = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("-=Division=-\n");
            int sum = num1 / num2;
            Console.WriteLine(sum);
            Console.ReadKey();
            menu();
        }
        public void help()
        {
            Console.WriteLine("-=Help=-\n");
            Console.WriteLine("If you got compiled this by yourself you don't need help.");
            Console.ReadKey();
            menu();
        }
        static void Main(string[] args)
        {
            menu();
        }
    }
}

Here is the error I get every time I try to run it (I'm using VS Express 2013) I get this error:

An object reference is required for the non-static field, method, or
property 'FunctionBased_Calculator.Program.menu()'

It's on line 133. I think it might have something to do with using menu() inside static void main. If anyone could help me that'd be great!

Prince
  • 157
  • 1
  • 2
  • 12

2 Answers2

2

menu() needs to be declared as static, along with it's entire call hierarchy:

public static void menu()

The compiler leaves no room for error. When accessing astatic method that's declared on the type, not the instance, you need to make sure any field or method called from it is static as well.

Yuval Itzchakov
  • 146,575
  • 32
  • 257
  • 321
0

You have to add a static to all your methods declaration like

public static void menu()
{
      ......

From static methods you can only call static methods o invoke new instance.

Marc Cals
  • 2,963
  • 4
  • 30
  • 48