Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
18.12.10, 21:07
|
#1
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
C# gleich/ungleich Operatoren
Hi,
weiß jemand von Euch ob die Gleich- (==) und Ungleich-Operatoren (!=) in C# (und in jeder Plattform-Version) unabhängig behandelt werden?
Also gibt es einen Unterschied zwischen
Code:
if (!(x==x)) {
..do_something()..
}
und
Code:
if (x!=x) {
..do_something()..
}
Die Frage ist letztendlich, ob man in C# die Anweisung nach der if-Abfrage erreichen kann:
Code:
if (x==x && x!=x) {
... der Code hier soll erreicht werden ...
}
|
|
|
18.12.10, 22:03
|
#2
|
Erfahrener Newbie
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
|
Mich entzieht zwar der Sinn Deiner Frage, aber keiner der Codeschnipsel wird die Funktion do_something erreichen da immer x==x ist. Einzige Ausnahme wäre beim Shadowing, wo x != x sein kann.
|
|
|
18.12.10, 22:15
|
#3
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
Zitat:
Zitat von Xalir
Mich entzieht zwar der Sinn Deiner Frage, aber keiner der Codeschnipsel wird die Funktion do_something erreichen da immer x==x ist. Einzige Ausnahme wäre beim Shadowing, wo x != x sein kann.
|
Ok, es gilt zu beachten, dass x ein eigener Klassentyp ist!
Und doch, do_something ist erreichbar.
Meine eigentliche Frage betrifft aber die Operatoren und ob das bei allen C#-Versionen/.NET-Frameworks gleich ist.
|
|
|
18.12.10, 22:40
|
#4
|
Erfahrener Newbie
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
|
Operatorenbehandlung ist seit der Einführung von C# gleichgeblieben. Du kannst also darauf vertrauen, egal unter welcher .NET-Version Du Dein Projekt kompilierst das die Operatoren gleich funktionieren.
Edit: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
|
|
18.12.10, 23:12
|
#5
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
Die Frage ist aber ob
und
in C# auch unterschiedlich behandelt werden.
Mit meinem Klassentyp soll es möglich sein, dass eine Anweisung nach if (x==x && x!=x) erfolgen kann...
Code:
CryptoObject crpt = new CryptoObject(Crypto_Steel);
if (crypt==crypt && crypt!=crypt)
crypt.ObjectSecure = true;
else
crypt.Dispose();
|
|
|
19.12.10, 01:18
|
#6
|
Erfahrener Newbie
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
|
Nein, == und != sind arithmetische Vergleichsoperatoren, während ! ein unärer Operator ist.
! dreht einfach den booleschen Wert um. Aus true wird false und umgekehrt.
Überlädst Du aber bsw. die Vergleichsoperatoren == und != dann gibt es ein Spezialfall, wo ! ein unerwartetes Ergebnis bringt.
Code:
public static bool operator==(object obj1, object obj2)
{
return obj1.Equals(obj2)
}
public static bool operator!=(object obj1, object obj2)
{
if obj1.Equals(obj2) then
return true
return false
}
Nun ergibt zwar !(1==1) immer noch false, aber 1!=1 ergibt nun true.
|
|
|
19.12.10, 02:03
|
#7
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
Danke!
Genau das wollte ich wissen!
Komm mit MS-Technologien eher selten in Berührung.
|
|
|
29.12.10, 12:49
|
#8
|
Neuling
Registriert seit: Dec 2010
Ort: Earth
Beiträge: 8
Bedankt: 1
|
Irre.
|
|
|
29.12.10, 13:32
|
#9
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
Zitat:
Zitat von cribre82
Irre.
|
Was oder wer ist irre?
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.
().
|