.Net Framework - Verständnisfragen

  • Allgemein

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    @Artentus: Ich glaube, wir reden von unterschiedlichen Funktionen.
    Mit Funktion meine ich

    VB.NET-Quellcode

    1. Function op_add(Op1 As Integer, Op2 As Integer) As Integer
    , also es gibt einen Wert zurück.
    Jedoch eine Zuweisung ist keine Funktion.
    A = B ist keine Funktion. B + 1 ist eine Funktion. Bei A = B + 1 wird A das Ergebnis der Funktion B + 1 zugewiesen.

    Edit: Bei C# wird eine Zuweisung wie eine Funktion behandelt:

    C-Quellcode

    1. bool a = GetStuff();
    2. bool b;
    3. if (b = a) 'b wird der Wert von a zugewiesen, gleichzeitig wird der Wert von a verwendet.
    4. {
    5. //Wenn a true ist, wird dieser Teil ausgeführt.
    6. }
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()

    Genau, und bei A += 1 wird A der Wert von A+ 1 zugewiesen, also exakt das selbe. Das ist praktisch nur Funktion und Zuweisung in einem, heißt es ist sowohl eine Funktion, als auch eine Zuweisung.
    Es ist ein wenig eine philosophische Frage, aber ich denke bei solchen Sachen halt gerne im lowlevel, wo kein Unterschied mehr zwischen A += 1 und A = A + 1 besteht.
    @Artentus: Dass A + B eine Funktion ist, verstehe ich. Aber warum A = b eine Funktion ist (eine Zuweisung, kein Vergleich), verstehe ich nicht.
    Wie gesagt: Eine Funktion gibt einen Wert zurück.

    VB.NET-Quellcode

    1. Function Add(A As Integer, B As Integer) As Integer
    2. Return A + B 'Das Ergebnis der Funktion A + B wird zurückgegeben.
    3. End Function

    Das funktioniert, aber das nachfolgende funktioniert nicht:

    VB.NET-Quellcode

    1. Function Assign(A As Integer, B As Integer) As ???
    2. Return A = B 'Und hier ist das als Zuweisung zu betrachten und nicht als Vergleich!
    3. End Function

    Das funktioniert eben nicht, weil eine Zuweisung keinen Wert zurückgibt (Siehe Edit vom letzten Post). Deshalb ist eine Zuweisung (für mich) keine Funktion.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Wie ich schon sagte, du darfst bei einem Integer nicht in .Net-Funktionen ausgehen. Integeroperationen sehen fertig kompiliert einfach so aus:

    Quellcode

    1. mov ax, 1h
    2. add ax, 1

    Das lädt den Wert aus Adresse 1 ins AX-Register und inkrementiert ihn. Das sieht immer so aus, egal ob du jetzt i++ oder i+=1 schreibst.