Ich habe dieses Stück CodeWarum fragt der Operator?: Nach einer expliziten Besetzung?
StateMachine.State = string.IsNullOrEmpty(MyString) ?
(IState) StateMachine.StateA : StateMachine.StateB;
ich es auch schreiben kann als
if (string.IsNullOrEmpty(MyString))
StateMachine.State = StateMachine.StateA;
else
StateMachine.State = StateMachine.StateB;
State
vom Typ IState
und StateA
und StateB
beide IState
implementieren.
Im ersten Snippet verlangt der Compiler eine explizite Umwandlung, während er in der zweiten nicht benötigt wird. Warum wird es im ersten Beispiel benötigt?
EDIT: Die vorgeschlagene doppelte Frage deckt meine Frage nicht vollständig ab. Meine Frage betrifft Objekte und Interfaces, während die andere Frage primitive Datentypen und konstante Zahlen betrifft. Besonders der Vorschlag von Quetzalcoatl über die Deklarationen ist sehr wertvoll.
Das Lesen der Antwort auf die vorgeschlagene doppelte Frage hätte mich niemals in diese Richtung weisen können.
Das war's! Ein sehr guter Vorschlag, meine Erklärungen von StateA und StateB zu IStates zu ändern. Vielen Dank! – ffonz