C# Else Befehl?

Status
Für weitere Antworten geschlossen.
Naja, bei so einem Programm :P

Gibt es irgendeine Seite, wo spezielle Befehle rund um Konsolenanwendungen aufgelistet sind?
 
Das sind die Befehle, die konkret nur mit Konsolenein- und ausgabe zu tun haben.
.Net hat weit über 10.000 Klassen (und Console ist nur eine davon). Suchst du was bestimmtes, dann verwende die Suche dort oder frage Google. ;)
 
OK ich probiere mal aus Neugiere da etwas rum :)

Vielen Dank :)
Ergänzung ()

OK nun, habe ich ir das angeschaut. Hättest Du einen Vorschlag, was ich programmieren könnte (Konsolenanwendungen). Bin jetzt ziemlich einfallslos.
:D

Danke
 
sollte mit == kein Problem sein. Größer und Kleiner und ähnlicher Murks ist aber suboptimal :)
 
== unterscheidet sich von String.Equals() in der Fehlerbehandlung. == stoppt nicht bei nicht initialisierten Strings, Equals() wirft hingegen eine Exception.

Kleines Beispiel:
Code:
class Program
{
    static void Main(string[] args)
    {
        string textA = null;
        string textB = null;
        Console.WriteLine("\"{0}\" == \"{1}\"? Result: {2}", textA, textB, textA == textB);
        try {
            Console.WriteLine("\"{0}\" equals \"{1}\"? Result: {2}", textA, textB, textA.Equals(textB));
        }
        catch (NullReferenceException)
        {
            Console.WriteLine("\"{0}\" equals \"{1}\"? Result: NullReferenceException", textA, textB);
        }

        textA = null;
        textB = "Welt!";
        Console.WriteLine("\"{0}\" == \"{1}\"? Result: {2}", textA, textB, textA == textB);
        try {
            Console.WriteLine("\"{0}\" equals \"{1}\"? Result: {2}", textA, textB, textA.Equals(textB));
        }
        catch (NullReferenceException)
        {
            Console.WriteLine("\"{0}\" equals \"{1}\"? Result: NullReferenceException", textA, textB);
        }

        textA = "Hallo ";
        textB = null;
        Console.WriteLine("\"{0}\" == \"{1}\"? Result: {2}", textA, textB, textA == textB);
        Console.WriteLine("\"{0}\" equals \"{1}\"? Result: {2}", textA, textB, textA.Equals(textB));

        textA = "Hallo ";
        textB = "Welt!";
        Console.WriteLine("\"{0}\" == \"{1}\"? Result: {2}", textA, textB, textA == textB);
        Console.WriteLine("\"{0}\" equals \"{1}\"? Result: {2}", textA, textB, textA.Equals(textB));


        Console.ReadKey();
    }
}
Die Ausgabe:
"" == ""? Result: True
"" equals ""? Result: NullReferenceException
"" == "Welt!"? Result: False
"" equals "Welt!"? Result: NullReferenceException
"Hallo " == ""? Result: False
"Hallo " equals ""? Result: False
"Hallo " == "Welt!"? Result: False
"Hallo " equals "Welt!"? Result: False
Equals() hilft also, Fehler im Code zu finden, daher sollte man das bevorzugt verwenden. Zumindest immer dann, wenn man erwartet, dass der erste String auch initialisiert ist.
 
Zuletzt bearbeitet:
e-Laurin schrieb:
Equals() hilft also, Fehler im Code zu finden, daher sollte man das bevorzugt verwenden.

Ich formuliere dein Fazit mal um, vielleicht kommst du dann selbst drauf, dass es Blödsinn ist ;)


"Normalize() hilft also, Fehler im Code zu finden, daher sollte man es bevorzugt verwenden."
oder
"GetType() hilft also, Fehler im Code zu finden, daher sollte man es bevorzugt verwenden."
oder
... kann das beliebig fortsetzen.

Der Aufruf einer Methode auf einer Null-Referenz ist eine Fehlerquelle. Das als "Hilfe" zu bezeichnen ist ziemlich gewagt ;)

Ich bin mir nicht 100%ig sicher, wie die Implementierung von Equals aussieht, aber ich würde darauf wetten, dass es Folgendes ist:

Code:
public bool Equals( string value )
{
    return string.Equals( this, value, StringComparison.Ordinal );
}

Der Operator == sollte identisch dazu sein.

Code:
public static bool operator ==( string lhs, string rhs )
{
    return string.Equals( lhs, rhs, StringComparison.Ordinal );
}
 
Die Frage ist halt, was man haben will, daher kann man kaum beantworten ob eines besser ist als das andere...

Da ich oft zwischen Java und C# switche, verwende ich persönlich immer equals, weil man bei Java mit "==" böse auf die Schn... fällt.
 
Zuletzt bearbeitet:
Ganz ehrlich? Ich bezweifel, dass es auch nur einen sinnvollen Fall gibt, in dem man die NullReferenceException behandeln möchte.
Der Overhead durch den Catch-Block ist um ein vielfaches höher als ein simples "if ( string.IsNullOrEmpty( str ) )" oder meinetwegen "if ( str == null )" (oder: "if ( Equals( null, str ) )")
Ergänzung ()

F_GXdx schrieb:
Da ich oft zwischen Java und C# switche, verwende ich persönlich immer equals, weil man bei Java mit "==" böse auf die Schn... fällt.

Dieses "Problem" gibt es in C# nicht. Sowohl 'Equals' als auch '==' vergleichen den Wert eines Strings, aber nicht dessen Referenz. Möchte man ähnliches Verhalten wie in Java, gibt es dafür 'ReferenceEquals'.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben