EDIT: Ursprünglich hatte das Beispiel dieses Beitrags mit Hash-Codes behandelt, so dass Sie einige Kommentare mit param.GetHashCode() statt (1 + param) sehen werden. Um mehr auf den Punkt zu kommen, habe ich die Funktionen geändert, um eins plus den absoluten Wert einer Zahl zu berechnen.C# - Begrenzt den Geltungsbereich der ternären Anweisung
Angenommen, ich möchte eine Funktion erstellen, die den absoluten Wert einer ganzen Zahl berechnet (ohne Math.Abs zu verwenden).
int absoluteValueOfOnePlus(int param)
{
int onePlusParam= 1 + param;
return ((onePlusParam> 0) ? (onePlusParam) : (-onePlusParam));
}
Ich suche den Umfang der onePlusParm innerhalb des ternären Aussage zu begrenzen - etwas Ähnliches wie: Ich könnte etwas Ähnliches schreiben
int absoluteValueOfOnePlus(intparam)
{
return (((int onePlusParam = 1 + param) > 0) ? (onePlusParam) : (-onePlusParam));
}
Ich verstehe, dass dies nicht gültig C# , aber es ist ein gutes Beispiel für das, was ich zu tun versuche - erstelle eine Variable, die nur im Rahmen eines ternären Operators existiert.
„Ich suche diese Methode zu komprimieren, bis auf eine Linie". Können Sie den Grund erklären, warum Sie dies tun müssen? – openshac
könnten Sie 'int ich tun; zurückgeben i = param.GetHashCode()> 0? ich: -i; '... ich würde nicht, aber du könntest es. –
@openshac, es geht mehr darum, den Umfang zu begrenzen als alles andere. Wenn die Funktion viel größer wäre, würde ich im Rest der Funktion existieren. Die Verwendung einer Deklaration in der ternären Anweisung würde den Geltungsbereich auf das Ternär beschränken - nachdem die Aussage abgeschlossen ist, wird i gelöscht. –