I'm new to C# and I've just created a passwords generator. I'm not sure if my code is following best practices, etc.
The schematic of the program is simple. How many passwords of x length can be created with y characters, that's it. An example, following [a-z0-9], 2 to the power of 36 = 68719476736 generated passwords.
I would add a new pattern with special characters but I was not able to do this, is it possible? I tried to add and the IDE reported error, one issue could be because I used question mark as special character.
Is there any mistakes in the code?
Does my program make sense?
Is my code clean and readable?
What do you suggest for the future, what ideas do you have to improve the code?
Main.cs
using System;
namespace PasswordsGenerator
{
    class Password
    {
        static void Main(string[] args)
        {
            string firstPattern = "[a-z0-9]";
            string secondPattern = "[a-zA-Z0-9]";
            Console.WriteLine("Passwords must be up to 7 in length.");
            Console.WriteLine($"List of patterns\n 1 - {firstPattern}\n 2 - {secondPattern}");
            Console.Write("Enter password length: ");
            int passwordLength = Convert.ToInt32(Console.ReadLine());
            Console.Write("Enter pattern: ");
            int pattern = Convert.ToInt32(Console.ReadLine());
            UserInput randomPassword = new UserInput(passwordLength, pattern);
            randomPassword.DisplayPasswords();
        }
    }
}
UserInput.cs
using System;
using System.IO;
namespace PasswordsGenerator
{
    class UserInput : Password
    {
        public int passwordLength { get; set; }
        public int userPattern { get; set; }
        public UserInput(int PasswordLength,int Pattern)
        {
            passwordLength = PasswordLength;
            userPattern = Pattern;
        }
        public void DisplayPasswords()
        {
            string charactersFirstPattern = "abcdefghijklmnopqrstuvwxyz0123456789";
            string charactersSecondPattern = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            
            try
            {
                //Block for password length 1
                if (passwordLength == 1 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        string result = char1;
                        string path = @"C:\Users\Username\Desktop\passwords.txt";
                        using (StreamWriter sw = File.AppendText(path))
                        {
                            sw.WriteLine("New password: " + result);
                        }
                        Console.WriteLine("New password: " + result);
                    }
                }
                else if (passwordLength == 1 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        string result = char1;
                        string path = @"C:\Users\Username\Desktop\passwords.txt";
                        using (StreamWriter sw = File.AppendText(path))
                        {
                            sw.WriteLine("New password: " + result);
                        }
                        Console.WriteLine("New password: " + result);
                    }
                }
                //Block password length 2
                else if (passwordLength == 2 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            string result = char1 + char2;
                            string path = @"C:\Users\Username\Desktop\passwords.txt";
                            using (StreamWriter sw = File.AppendText(path))
                            {
                                sw.WriteLine("New password: " + result);
                            }
                            Console.WriteLine("New password: " + result);
                        }
                    }
                }
                else if (passwordLength == 2 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            string result = char1 + char2;
                            string path = @"C:\Users\Username\Desktop\passwords.txt";
                            using (StreamWriter sw = File.AppendText(path))
                            {
                                sw.WriteLine("New password: " + result);
                            }
                            Console.WriteLine("New password: " + result);
                        }
                    }
                }
                //Block for password length 3
                else if (passwordLength == 3 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            for (int k = 0; k < charactersFirstPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersFirstPattern[k]);
                                string result = char1 + char2 + char3;
                                string path = @"C:\Users\Username\Desktop\passwords.txt";
                                using (StreamWriter sw = File.AppendText(path))
                                {
                                    sw.WriteLine("New password: " + result);
                                }
                                Console.WriteLine("New password: " + result);
                            }
                        }
                    }
                }
                else if (passwordLength == 3 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            for (int k = 0; k < charactersSecondPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersSecondPattern[k]);
                                string result = char1 + char2 + char3;
                                string path = @"C:\Users\Username\Desktop\passwords.txt";
                                using (StreamWriter sw = File.AppendText(path))
                                {
                                    sw.WriteLine("New password: " + result);
                                }
                                Console.WriteLine("New password: " + result);
                            }
                        }
                    }
                }
                //Block for password length 4
                else if (passwordLength == 4 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            for (int k = 0; k < charactersFirstPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersFirstPattern[k]);
                                for (int l = 0; l < charactersFirstPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersFirstPattern[l]);
                                    string result = char1 + char2 + char3 + char4;
                                    string path = @"C:\Users\Username\Desktop\passwords.txt";
                                    using (StreamWriter sw = File.AppendText(path))
                                    {
                                        sw.WriteLine("New password: " + result);
                                    }
                                    Console.WriteLine("New password: " + result);
                                }
                            }
                        }
                    }
                }
                else if (passwordLength == 4 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            for (int k = 0; k < charactersSecondPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersSecondPattern[k]);
                                for (int l = 0; l < charactersSecondPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersSecondPattern[l]);
                                    string result = char1 + char2 + char3 + char4;
                                    string path = @"C:\Users\Username\Desktop\passwords.txt";
                                    using (StreamWriter sw = File.AppendText(path))
                                    {
                                        sw.WriteLine("New password: " + result);
                                    }
                                    Console.WriteLine("New password: " + result);
                                }
                            }
                        }
                    }
                }
                //Block for password length 5
                else if (passwordLength == 5 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            for (int k = 0; k < charactersFirstPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersFirstPattern[k]);
                                for (int l = 0; l < charactersFirstPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersFirstPattern[l]);
                                    for (int m = 0; m < charactersFirstPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersFirstPattern[m]);
                                        string result = char1 + char2 + char3 + char4 + char5;
                                        string path = @"C:\Users\Username\Desktop\passwords.txt";
                                        using (StreamWriter sw = File.AppendText(path))
                                        {
                                            sw.WriteLine("New password: " + result);
                                        }
                                        Console.WriteLine("New password: " + result);
                                    }
                                }
                            }
                        }
                    }
                }
                else if (passwordLength == 5 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            for (int k = 0; k < charactersSecondPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersSecondPattern[k]);
                                for (int l = 0; l < charactersSecondPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersSecondPattern[l]);
                                    for (int m = 0; m < charactersSecondPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersSecondPattern[m]);
                                        string result = char1 + char2 + char3 + char4 + char5;
                                        string path = @"C:\Users\Username\Desktop\passwords.txt";
                                        using (StreamWriter sw = File.AppendText(path))
                                        {
                                            sw.WriteLine("New password: " + result);
                                        }
                                        Console.WriteLine("New password: " + result);
                                    }
                                }
                            }
                        }
                    }
                }
                //Block for password length 6
                else if (passwordLength == 6 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            for (int k = 0; k < charactersFirstPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersFirstPattern[k]);
                                for (int l = 0; l < charactersFirstPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersFirstPattern[l]);
                                    for (int m = 0; m < charactersFirstPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersFirstPattern[m]);
                                        for (int n = 0; n < charactersFirstPattern.Length; n++)
                                        {
                                            string char6 = Convert.ToString(charactersFirstPattern[n]);
                                            string result = char1 + char2 + char3 + char4 + char5 + char6;
                                            string path = @"C:\Users\Username\Desktop\passwords.txt";
                                            using (StreamWriter sw = File.AppendText(path))
                                            {
                                                sw.WriteLine("New password: " + result);
                                            }
                                            Console.WriteLine("New password: " + result);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (passwordLength == 6 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            for (int k = 0; k < charactersSecondPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersSecondPattern[k]);
                                for (int l = 0; l < charactersSecondPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersSecondPattern[l]);
                                    for (int m = 0; m < charactersSecondPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersSecondPattern[m]);
                                        for (int n = 0; n < charactersSecondPattern.Length; n++)
                                        {
                                            string char6 = Convert.ToString(charactersSecondPattern[n]);
                                            string result = char1 + char2 + char3 + char4 + char5 + char6;
                                            string path = @"C:\Users\Username\Desktop\passwords.txt";
                                            using (StreamWriter sw = File.AppendText(path))
                                            {
                                                sw.WriteLine("New password: " + result);
                                            }
                                            Console.WriteLine("New password: " + result);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                //Block for password length 7
                else if (passwordLength == 7 && userPattern == 1)
                {
                    for (int i = 0; i < charactersFirstPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersFirstPattern[i]);
                        for (int j = 0; j < charactersFirstPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersFirstPattern[j]);
                            for (int k = 0; k < charactersFirstPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersFirstPattern[k]);
                                for (int l = 0; l < charactersFirstPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersFirstPattern[l]);
                                    for (int m = 0; m < charactersFirstPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersFirstPattern[m]);
                                        for (int n = 0; n < charactersFirstPattern.Length; n++)
                                        {
                                            string char6 = Convert.ToString(charactersFirstPattern[n]);
                                            for (int o = 0; o < charactersFirstPattern.Length; o++)
                                            {
                                                string char7 = Convert.ToString(charactersFirstPattern[o]);
                                                string result = char1 + char2 + char3 + char4 + char5 + char6 + char7;
                                                string path = @"C:\Users\Username\Desktop\passwords.txt";
                                                using (StreamWriter sw = File.AppendText(path))
                                                {
                                                    sw.WriteLine("New password: " + result);
                                                }
                                                Console.WriteLine("New password: " + result);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (passwordLength == 7 && userPattern == 2)
                {
                    for (int i = 0; i < charactersSecondPattern.Length; i++)
                    {
                        string char1 = Convert.ToString(charactersSecondPattern[i]);
                        for (int j = 0; j < charactersSecondPattern.Length; j++)
                        {
                            string char2 = Convert.ToString(charactersSecondPattern[j]);
                            for (int k = 0; k < charactersSecondPattern.Length; k++)
                            {
                                string char3 = Convert.ToString(charactersSecondPattern[k]);
                                for (int l = 0; l < charactersSecondPattern.Length; l++)
                                {
                                    string char4 = Convert.ToString(charactersSecondPattern[l]);
                                    for (int m = 0; m < charactersSecondPattern.Length; m++)
                                    {
                                        string char5 = Convert.ToString(charactersSecondPattern[m]);
                                        for (int n = 0; n < charactersSecondPattern.Length; n++)
                                        {
                                            string char6 = Convert.ToString(charactersSecondPattern[n]);
                                            for (int o = 0; o < charactersSecondPattern.Length; o++)
                                            {
                                                string char7 = Convert.ToString(charactersSecondPattern[o]);
                                                string result = char1 + char2 + char3 + char4 + char5 + char6 + char7;
                                                string path = @"C:\Users\Username\Desktop\passwords.txt";
                                                using (StreamWriter sw = File.AppendText(path))
                                                {
                                                    sw.WriteLine("New password: " + result);
                                                }
                                                Console.WriteLine("New password: " + result);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Whoops. You can only use a password up to 7 and has only 2 patterns.");
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("Input was not in a valid format. Use integers.");
            }
            finally
            {
                Console.WriteLine("End of the program.");
            }
        }
    }
}