Search code examples
c#arraysfunctionfor-loopprocedure

C# having problems with using global variables


So, I have finished majority of my code but one criteria required me to use a Procedure. So, when i decided to use a procedure i encountered several of problems. The main issue was that the variables which i have included in the first method(Generate Number and number) wont show up in my other methods.So can i make these variables global so that they work in all of my methods or is there another alternative solution to this problem?

Note: This is not my full code its just a piece out of it.

class Program
{
    static void Main(string[] args)
    {
        Random GenerateNumber = new Random();
        int[] number = new int[6];
        Generating();
        Ordering();
    }

    static void Generating()
    {
        Console.Clear();
        Console.WriteLine("Stage 1 : 6 random numbers have been generated:\n");
        for (int c = 0; c < number.Length; c++)
        {
            if (number[c] == 0)
            {
                number[c] = GenerateNumber.Next(1, 50);
                Console.Write("Random number " + (c + 1) + " = " + number[c] + "\n");
            }
        }
    }

    static void Ordering()
    {
        Console.Clear();
        for (int i = 0; i < number.Length; i++)
        {
            Array.Sort(number);
            Console.Write("Number " + (i + 1) + " = " + number[i] + "\n");
        }
    }
}

Solution

  • Make them global is easiest but as said above, not the best way.

    class Program
    {
        static Random GenerateNumber = new Random();
        static int[] number = new int[6];
    
        static void Main(string[] args)
        {
            Generating();
            Ordering();
        }
    

    Better to use parameters

    class Program
    {    
        static void Main(string[] args)
        {
            Random GenerateNumber = new Random();
            int[] number = new int[6];
            Generating(GenerateNumber, number);
            Ordering(number);
        }
    
        static void Generating(Random generateNumber, int[] number)
        {
            Console.Clear();
            Console.WriteLine("Stage 1 : 6 random numbers have been generated:\n");
            for (int c = 0; c < number.Length; c++)
            {
                if (number[c] == 0)
                {
                    number[c] = generateNumber.Next(1, 50);
                    Console.Write("Random number " + (c + 1) + " = " + number[c] + "\n");
                }
            }
        }
    
        static void Ordering(int[] number)
        {
            Console.Clear();
            for (int i = 0; i < number.Length; i++)
            {
                Array.Sort(number);
                Console.Write("Number " + (i + 1) + " = " + number[i] + "\n");
            }
        }
    }