Der erste Fall führt die Methode Add
und druckt den Rückgabewert 2
an die Konsole.
Der zweite Fall wird nicht kompiliert, da Sum
eine Klassenvariable ist und Ihnen ein Objektverweis wie im ersten Fall fehlt, um darauf zuzugreifen.
Wenn Sie Sum
static
dann Main
arbeiten und drucken einfach der Standardwert von Sum
die 0
ist machen würde. Da rufst du nie die Add
Methode an.
Für den Unterschied der beiden Add()
Methoden:
Der zweite Fall verwendet eine Klassenvariable und manipuliert es. Es muss so aufgerufen werden, dass sich der Wert Sum
ändert.
Der erste Fall verwendet nur eine lokale Berechnung und ändert nichts innerhalb der Klasse. Es gibt einfach das Ergebnis einer Berechnung
EDIT:
Was wäre der Unterschied zwischen den beiden, was bevorzugt wird?
Es hängt stark davon ab, was Sie vorhaben. Wenn das einzige, was Sie interessiert, das Ergebnis von 1+1
ist und Sie dieses Ergebnis in einer Methode wie der Main
verwenden müssen, dann verwenden Sie den ersten Fall.
Wenn die Variable ein signifikantes Merkmal der Klasse wie folgt dar:
public class BillsToPay
{
public int Sum;
List<int> Bills = new List<int>() {3,5,6,7};
public void CalculateAllBills()
{
foreach (var bill in Bills)
{
Sum = Sum + bill;
}
}
}
Dann würden Sie eine Methode, die die Klassenvariable Sum
manipuliert und aktualisiert seinen Zustand. so kommt die zweite Version ins Spiel. Aber es ist immer eine Mischung aus Geschmack und Absicht, wie man sich einem bestimmten Problem nähert.
Kleines Testprogramm:
static void Main(string[] args)
{
BillsToPay btp = new BillsToPay();
btp.CalculateAllBills();
Console.WriteLine(Convert.ToString(btp.Sum));
}
ich sehe. Also das: ' int Sum; static void Haupt (string [] args) { void Add(); Console.WriteLine (Convert.ToString (Summe)); } void Add() { Summe = 1 + 1; } ' Sollte 2 zurückgeben? Entschuldige dich für die ziemlich dumme Frage –
@MatthysFourie Ich schrieb meine Antwort um. –
Ah ja, ich habe den Code einfach in den Editor geschrieben, mein Compiler hätte das lesen sollen. Eine weitere Frage, wie funktioniert Code in Kommentaren, wenn Sie überhaupt können? Danke für die Hilfe übrigens. –