Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
C# Else Befehl?
- Ersteller Gary12345
- Erstellt am
- Status
- Für weitere Antworten geschlossen.
Krik
Fleet Admiral
- Registriert
- Juni 2005
- Beiträge
- 14.928
Einen Überblick über alle Konsolenbefehle und -eigenschaften findest du in der MSDN-Bibliothek. Das wird dein Standardwerk sein beim C#-programmieren.
http://msdn.microsoft.com/de-de/library/43zwz7ys.aspx
http://msdn.microsoft.com/de-de/library/43zwz7ys.aspx
OK ich probiere mal aus Neugiere da etwas rum
Vielen Dank
OK nun, habe ich ir das angeschaut. Hättest Du einen Vorschlag, was ich programmieren könnte (Konsolenanwendungen). Bin jetzt ziemlich einfallslos.
Danke
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.
Danke
F_GXdx
Captain
- Registriert
- März 2006
- Beiträge
- 4.028
Krik
Fleet Admiral
- Registriert
- Juni 2005
- Beiträge
- 14.928
== unterscheidet sich von String.Equals() in der Fehlerbehandlung. == stoppt nicht bei nicht initialisierten Strings, Equals() wirft hingegen eine Exception.
Kleines Beispiel:
Die Ausgabe:
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();
}
}
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."" == ""? 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
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 );
}
F_GXdx
Captain
- Registriert
- März 2006
- Beiträge
- 4.028
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.
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 ) )")
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'.
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.
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 599
- Antworten
- 9
- Aufrufe
- 2.006
- Antworten
- 6
- Aufrufe
- 1.405
- Antworten
- 10
- Aufrufe
- 1.825
- Antworten
- 15
- Aufrufe
- 5.979