I'm beginner at programming (I guess it's quite obvious) and this is my small "app" I tried to make, that takes username and password from the user. Could you give me some advice on how can I improve it?

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

{
class Program
{

static void Main(string[] args)
{
Initialization();
}

public static void Initialization()
{
int x = 0;
int choice = 0;

while (x < 2)
{
Console.Clear();

Console.WriteLine();

string option2 = "Exit";

Console.WriteLine(option1 + "\n" + option2);

while (x < 2)
{
if (info.Key == ConsoleKey.UpArrow)
{
Console.Clear();
Console.ResetColor();

Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(option1);

Console.ResetColor();
Console.WriteLine(option2);

choice = 1;
}
else if (info.Key == ConsoleKey.DownArrow)
{
Console.Clear();
Console.ResetColor();

Console.ResetColor();
Console.WriteLine(option1);

Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(option2);
choice = 2;

}

if (info.Key == ConsoleKey.Enter && choice == 1)
{
{
Console.WriteLine("Welcome");
x = 2;
}
else
{
break;
}

}
else if (info.Key == ConsoleKey.Enter && choice == 2)
{
Shutdown();
}
}
}

}
public static void Shutdown()
{
Console.ResetColor();
System.Environment.Exit(0);
}
{
{
Console.WriteLine("Welcome");
return true;
}
else
{
return false;
}
}
}
}


Just a few things:

• Don't use \n as a literal, we use Environment.NewLine instead.
• Don't use "string concatenation" (string + string), instead use string.Join, string.Format or a StringBuilder. I.e.:

Console.WriteLine(option1 + "\n" + option2);


Should be:

Console.WriteLine("{0}{1}{2}", option1, Environment.NewLine, option2);


Just as well, you should, ideally, switch this to two Console.WriteLine statements:

Console.WriteLine(option1);
Console.WriteLine(option2);

• A method should have on responsibility (SRP):

public static bool Login(string username, string password)
{
{
Console.WriteLine("Welcome");
return true;
}
else
{
return false;
}
}


The Console.WriteLine statement does not belong there, Login should simply return true or false in this case.

• Whilst I agree about string concatenation in this specific case, I disagree with the blanket statement Don't use "string concatenation". String concatenation with a few strings is more efficient than calling string.Format or using a StringBuilder, and depending on its use can be more or less legible than calling a method. – 404 Dec 18 '16 at 23:42