Choosing your program flow statements

You are updating an old C#2 console application to a WPF C#5 application. The application is used by hotels to keep track of reservations and guests coming and leaving. You are going through the old code base to determine whether there is code that can be easily reused. You notice a couple of things: - The code uses the goto statement to manage flow. - There are a lot of long if statements that map user input. - The code uses the for loop extensively.

What is the disadvantage of using goto? How can you avoid using the goto statement?
Which statement can you use to improve the long if statements?
What are the differences between the for and foreach statement? When should you use which?