Hur nyttjar jag resultatet min metod returnerar? [C#]
Hej,
håller på att ta mina första staplande steg in i programmerings värld och följer Microsofts egna C# för nybörjare där jag just lärt mig vad en metod är och hur man anropar (rätt ord?) den.
Glad i hågen tänkte jag att nu sablar ska jag minsann göra något eget! Jag har gjort en enkel konsolapplikation som tar emot två siffror och sedan frågar vilket av de fyra vanliga räknesätten du vill använda, anropar den korrekta metoden beroende på ditt val och sedan kastar ur sig resultat beroende på vad man väljer. Min kod är följande:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MethodCalculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Pick a number ");
float firstNumber = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Pick another number ");
float secondNumber = Convert.ToSingle(Console.ReadLine());
Console.Write("What would you like to do?\n" +
"1) Add\n" +
"2) Subtract\n" +
"3) Multiply\n" +
"4) Divide\n" +
"5) All of the above\n");
int choice = Convert.ToInt16(Console.ReadLine());
if (choice == 1)
{
float sum = Add(firstNumber, secondNumber);
Console.WriteLine("The sum of {0} and {1} is {2}",firstNumber, secondNumber, sum);
}
else if (choice == 2)
{
float difference = Subtract(firstNumber, secondNumber);
Console.WriteLine("The difference of {0} and {1} is {2}", firstNumber, secondNumber, difference);
}
else if (choice == 3)
{
float product = Multiply(firstNumber, secondNumber);
Console.WriteLine("The product of {0} and {1} is {2}", firstNumber, secondNumber, product);
}
else if (choice == 4)
{
float quotient = Divide(firstNumber, secondNumber);
Console.WriteLine("The quotient of {0} and {1} is {2}", firstNumber, secondNumber, quotient);
}
else if (choice == 5)
{
float sum = Add(firstNumber, secondNumber);
float difference = Subtract(firstNumber, secondNumber);
float product = Multiply(firstNumber, secondNumber);
float quotient = Divide(firstNumber, secondNumber);
Console.WriteLine("You picked {0} as your first number and {1} as your second number.\n" +
"If you add them you get {2}\n" +
"If you subtract them you get {3}\n" +
"If you multiply them you get {4}\n" +
"If you divide {0} with {1} you get {5}",
firstNumber,
secondNumber,
sum,
difference,
product,
quotient);
}
else
{
Console.WriteLine("That is not an option");
Console.WriteLine("Press any key to exit");
}
Console.ReadLine();
}
private static float Add(
float firstNumber,
float secondNumber)
{
float sum = firstNumber + secondNumber;
return sum;
}
private static float Subtract(
float firstNumber,
float secondNumber)
{
float difference = firstNumber - secondNumber;
return difference;
}
private static float Multiply(
float firstNumber,
float secondNumber)
{
float product = firstNumber * secondNumber;
return product;
}
private static float Divide(
float firstNumber,
float secondNumber)
{
float quotient = firstNumber / secondNumber;
return quotient;
}
}
}
Jag undrar nu vad det är jag missförstått då jag trodde att de saker jag returnerar (hoppas det är rätt ord) från metoderna skulle gå att använda direkt utan att deklarera dem. Exempelvis trodde jag att nedanstående skulle fungera:
if (choice == 1)
{
Console.WriteLine("The sum of {0} and {1} is {2}",firstNumber, secondNumber, sum);
}
Men då säger kompilatorn att "The name 'sum' doesn't exist in the current context" och jag måste istället göra
if (choice == 1)
{
float sum = Add(firstNumber, secondNumber);
Console.WriteLine("The sum of {0} and {1} is {2}",firstNumber, secondNumber, sum);
}
Ett annat alternativ som jag först använde var
if (choice == 1)
{
Console.WriteLine("The sum of {0} and {1} is {2}",firstNumber, secondNumber, Add(firstNumber, secondNumber));
}
men det kändes krånligare att läsa i min mening, mycket möjligt att det är mer korrekt dock?
Att koden i övrigt troligen går att förbättra på massor av sätt är jag medveten om, speciellt så gillar jag inte den gigantiska IF prylen och antar att det går att göra mycket snyggare men det är ett problem för en annan dag, såtillvida det inte är den som strular till det för mig?
Min fundering efter denna gigantiska vägg av information är alltså följande: Kan jag på något sätta nyttja det jag får ut ur metoderna utan att behöva deklarera dem eller gör jag så som man ska göra?
Förhoppningsvis betyder den frågan ungefär vad jag tror att den gör
Primär: R9 3900X | ASUS X570-F Gaming | NH-D15 | 64GB@3200MHz | RTX 3080 10GB | Seasonic 850W | Fractal Define R6 |
Gamla bettan: i5 750@3.8GHz | 8GB | HD5770 | Corsair VS 550W | FD R2 |