myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C# gleich/ungleich Operatoren

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 18.12.10, 21:07   #1
m3zz0w1x
Banned
 
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
m3zz0w1x ist noch neu hier! | 0 Respekt Punkte
Standard 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 ...
}
m3zz0w1x ist offline   Mit Zitat antworten
Ungelesen 18.12.10, 22:03   #2
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Xalir ist offline   Mit Zitat antworten
Ungelesen 18.12.10, 22:15   #3
m3zz0w1x
Banned
 
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
m3zz0w1x ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Xalir Beitrag anzeigen
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.
m3zz0w1x ist offline   Mit Zitat antworten
Ungelesen 18.12.10, 22:40   #4
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

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 ]
Xalir ist offline   Mit Zitat antworten
Ungelesen 18.12.10, 23:12   #5
m3zz0w1x
Banned
 
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
m3zz0w1x ist noch neu hier! | 0 Respekt Punkte
Standard

Die Frage ist aber ob

Code:
(!(1==1))
und

Code:
(1!=1)
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();
m3zz0w1x ist offline   Mit Zitat antworten
Ungelesen 19.12.10, 01:18   #6
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Xalir ist offline   Mit Zitat antworten
Ungelesen 19.12.10, 02:03   #7
m3zz0w1x
Banned
 
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
m3zz0w1x ist noch neu hier! | 0 Respekt Punkte
Standard

Danke!
Genau das wollte ich wissen!

Komm mit MS-Technologien eher selten in Berührung.
m3zz0w1x ist offline   Mit Zitat antworten
Ungelesen 29.12.10, 12:49   #8
cribre82
Neuling
 
Benutzerbild von cribre82
 
Registriert seit: Dec 2010
Ort: Earth
Beiträge: 8
Bedankt: 1
cribre82 ist noch neu hier! | 0 Respekt Punkte
Standard

Irre.
cribre82 ist offline   Mit Zitat antworten
Ungelesen 29.12.10, 13:32   #9
m3zz0w1x
Banned
 
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
m3zz0w1x ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von cribre82 Beitrag anzeigen
Irre.
Was oder wer ist irre?
m3zz0w1x ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.


Sitemap

().