Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter(der ist verfügbar). Programmierfragen über PN / Konversation werden ignoriert!
Ein anderes Beispiel:
Nehmen wir mal theoretisch an du hast eine Form/Konsole, die nur ASCII-Zeichen pro 10 Zeilen zulassen würde.
Wenn man dann beispielsweise inssesamt 100 Zeichen ausgeben möchte, dann erfolgt doch bei jeder Ausgabe eine if-Abrage ob das Zeilenlimit erreicht ist. Bei einem if >= 10 erfolgt ein Zeilenumbruch.
Braucht man da einen else-Zweig?
Nicht ohne Grund ist so in eigentlich jeder Sprache die Variante "Only" if vorgesehen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „wertherchen“ ()
Wenn man IF einfach ins Deutsch übersetzt erklärt es ganz genau was es macht.
VB.NET-Quellcode
if a=b then
'what ever
elseif b = c then
'what ever 2
else
'what ever 3
endif
Wenn a=b dann mach das
Wenn nicht aber b = c dann mach das
Wenn nicht dann mach das
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses? A: Because they can't C#
Daily prayer: "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
meine codes:
v1. prüfe ob x=12 (Computer mach was)
v.2 prüfe ob x=12 (Computer mach was. sonst mach halt nix.)
v.3 prüfe ob x=12 (Computer mach was. wenn x nicht 12 dann suche dir eine Alternative)
und welche Variante ist nun die Beste um zu Erklären wie das mit dem If geht?
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dizzy“ ()
@Dizzy ein ELSE gibt es immer. Wenn man kein ELSE angibt dann ist ELSE - "tu nix"
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses? A: Because they can't C#
Daily prayer: "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
If x = 12 Then
LabelAusgabe.Text = "x = 12"
Else
'nop
End If
Code sollte lesbar sein.
Wenn du etwas in einer Zeile schreiben kannst anstatt in 5, dann ist das wesentlich einfacher zu erfassen.
Bei viel unnützem Code wird das Programm schnell unübersichtlich.
Der Compiler baut aus beiden Varianten denselben Code.
--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch --
Was man aber allgemein sagen kann: ein else ist nie falsch, selbst wenn es unnötig ist.
meine Meinung
Code sollte lesbar sein.
Wenn du etwas in einer Zeile schreiben kannst anstatt in 5, dann ist das wesentlich einfacher zu erfassen.
Bei viel unnützem Code wird das Programm schnell unübersichtlich.
verstehe ich nicht. das war auch nicht die Frage.
Der Code aus V2 macht das selbe wie aus V1.
Sprechend würde der Code aus V1 wie folgt aussehen:
Wenn x = 12 Dann setze den Text im Label auf x = 12.
aus V2 klingt dies dann schon komischer:
WENN x = 12 DANN setze den Text im Label auf x = 12 SONST... ja, sonst was?...
Aus Syntaktischer Sicht ist eine if-then-else nicht falsch weil es den Compiler nicht interessiert bzw. weil er es verarbeiten kann.
Fraglich ist aber ob das aus logischer Sicht korrekt / sinnvoll ist.
Ich denke solche Fragen werden aber erst dann interessant wenn mehrere Programmierer an einem Projekt arbeiten.
sind nicht nur sinngemäß Äquivalent, sondern eben auch was den erzeugenden Code anbelangt, das ist das Schöne an C Sprachen, da erkennt man diese gleichheit auch ziemlich einfach:
In C Sprachen ist bei dingen wie If/For whatever immer die nächste Anweisung innerhalb des Scopes, man kann aber "sub-scopes" erzeugen mittels {} um mehrere Anweisungen reinzubekommen
C#-Quellcode
if (value>0.8)
{
//anweisung
}
else
{
//anweisung
}
sind also Äquivalent für einzelne Anweisungen, eine Anweißung ist dabei aber auch ein if
C#-Quellcode
if (value>0.8)
//anweisung
else
//anweisung
C#-Quellcode
if (value>0.8)
//anweisung
else
if (value>0.6)
//anweisung
else
//anweisung
Und C Sprachen sind Whitespaces so ziemlich egal, entfernen wir doch einfach welche
C#-Quellcode
if (value>0.8)
//anweisung
elseif (value>0.6)
//anweisung
else
//anweisung
Und es ist immer noch eins zu eins der gleiche Code
(natürlich kann man jetzt noch beliebig Scopes hinzufügen)
Sorry @TE, falls das jetzt etwas zu viel Exkursion war
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---
genau v1 und v2 machen genau das gleiche. (aber in v2 gibt es eine Alternative)
und v3 führt die Alternative aus.
? Welche alternative gibt es denn?
Der maschine zu sagen es soll nix machen ist
keine alternative.
Wenn das else weggelassen wird macht die maschine ebenso nichts. Daher ist eine “alternative“ die nichts macht unlogisch.
Else brauchst du nur, wenn du dem Gegenteil vom Ergebnis einer Aktion zuweisen möchtest. Also.. warum sollte man es überhaupt nutzen, wenn man nur eine Abfrage braucht? Einfach so? Oder.. eh.. verstehe ich nicht.
Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
Was man aber allgemein sagen kann: ein else ist nie falsch, selbst wenn es unnötig ist.
meine Meinung
Und warum dann ein else mit Zwang einbauen?
Ich habe in meinem Programm etliche Einstellungen (Boolean). Wenn die True ist, soll etwas passieren. Andernfalls halt nicht und das Programm läuft weiter... Da braucht man kein Else.
If(bProtokollSchreiben) Then WriteProtokoll()
"Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."