Sie haben keine Backing-Variable deklariert - Sie haben gerade eine Eigenschaft, deren Getter und Setter sich selbst aufrufen. Es ist mir nicht klar, warum das erste Formular nicht von Unity unterstützt wird - was bedeutet, dass das Äquivalent ebenfalls nicht unterstützt wird, aber es ist im Grunde Folgendes:
%Vor%Ich hätte natürlich einen konventionelleren Namen - was bedeutet, dass Sie ohne das "Wert" -Bit davonkommen können:
%Vor% Um ein bisschen mehr Details darüber zu geben, warum Ihr aktuelles zweites Formular ein StackOverflowException
wirft, sollten Sie immer daran denken, dass Eigenschaften im Grunde verkappte Methoden sind. Ihr fehlerhafter Code sieht folgendermaßen aus:
Hoffentlich ist es offensichtlich, warum diese Version den Stapel bläst. Die geänderte Version legt nur eine Variable fest, anstatt die Eigenschaft erneut aufzurufen. Daher sieht sie beim Erweitern folgendermaßen aus:
%Vor% Sie können nicht denselben Variablennamen im Getter und Setter verwenden.
Dies wird dazu führen, dass es sich selbst anruft und stackoverflow wird. Zu viel Rekursion.
Sie benötigen eine Hintergrundvariable:
Tags und Links c# stack-overflow callstack setter