3 Stimmen

Negativ bis -1, 0 bis 0, positiv bis 1

Ich habe eine Aufzählung MyEnum (Neg -1; None 0; Pos 1) .

Ich verwende das Ergebnis von CompareTo() um ein Objekt dieser Aufzählung zu initialisieren.

Was ist die am leistungsfähigsten wie man das in .NET machen kann (Negativ zu -1, 0 zu 0, positiv zu 1)?

NB.
CompareTo() gibt einen Integer-Wert zurück..

2 Stimmen

@knittl : denken Sie, dass die Abteilung am leistungsfähigsten ist?

9 Stimmen

@knittl macht .NET-Map 0/0 a 0 ?

0 Stimmen

Wenn dem Enum bereits die Werte -1/0/1 zugewiesen sind, wird CompareTo() immer -1, 0 oder 1 zurückgeben (niemals einen anderen Wert). Wenn ich also richtig verstehe, können Sie einfach Folgendes tun, um einen Wert vom Typ MyEnum zu erhalten: MyEnum myval = (MyEnum)x.CompareTo(y);

13voto

Henrik Punkte 22966

Werfen Sie einen Blick auf Math.Vorzeichen

11voto

knittl Punkte 214432

Gibt es eine eingebaute Methode namens Math.Sign im .net-Framework

10voto

stevehipwell Punkte 52558

Wie @Henrik und @knittl gesagt haben, sollten Sie Math.Sign . Aber wenn Sie daran interessiert sind, was das .Net-Framework hinter den Kulissen tut, dann ist der folgende Code aus Reflector herausgekommen.

public static int Sign(int value)
{
  if (value < 0)
  {
    return -1;
  }
  if (value > 0)
  {
    return 1;
  }
  return 0;
}

4voto

mbeckish Punkte 10318
Math.Sign(value)

3voto

GvS Punkte 51365

Das Ergebnis von CompareTo ist negativ, Null oder positiv. Wenn Sie sich die anderen Antworten ansehen, verwendet Math.Sign 2 if-Anweisungen, um einen int zurückzugeben.

Codieren Sie einfach Math.Sign neu, um Ihre Aufzählung zurückzugeben.

(Wenn es sich nicht um eine Hausaufgabe handeln würde, würde ich ein Code-Beispiel geben, aber man soll ja daraus lernen).

Testen Sie anschließend, was am leistungsfähigsten ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X