2017-03-09 2 views
0

Ich möchte Syntax Zucker in C# wissen.C# Syntax Zucker in drei Bedingungen

var name = side=="BUY" ? "LONG" : "SHORT"; 

-> Es ist sehr einfach.

Aber es gibt die Möglichkeit des Wertes außer "KAUFEN" und "VERKAUFEN" in der Seite. Folgendes ist redundant. Bitte sagen Sie mir den einfachen Ausdruck.

var name; 
if (side == "BUY") 
    name="LONG"; 
else if(side="SELL") 
    name="SHORT"; 
else 
    throw Exception(); 
+1

'Switch-case' ?. – zerkms

+0

Gibt es die Syntax, um einen Rückgabewert in 'Name Variable' in Switch-Case zu setzen? – kyounoii

+0

Ich bin mir nicht sicher, ob ich verstehen kann, was du meinst. – zerkms

Antwort

1

Hier sind einige kürzere Wege Exception (Groß- und Kleinschreibung) zu werfen:

string name1 = side == "BUY" ? "LONG" : side == "SELL" ? "SHORT" : side.Remove(-1); // System.ArgumentOutOfRangeException: 'StartIndex cannot be less than zero.' 

string name2 = new[] { "LONG", "SHORT" }[Array.IndexOf(new[] { "BUY", "SELL" }, side)]; // System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' 

string name3 = new Dictionary<string, string> { { "BUY", "LONG" }, { "SELL", "SHORT" } }[side]; // System.Collections.Generic.KeyNotFoundException: 'The given key was not present in the dictionary.' 
1

Wenn Sie nichts dagegen haben die ternären nisten:

var name = side == "BUY" 
    ? "LONG" 
    : side == "SELL" 
     ? "SHORT" 
     : "NEITHER"; 

Working Fiddle here.

Wenn Sie eine Ausnahme in dem „WEDER“ Fall werfen müssen, würden aber etwas anderes bevorzugen, als wenn - anders, wenn - anders konstruieren, dann könnte ein Schalter Ansatz:

using System;

public class Program 
{ 
    public static void Main() 
    { 
     var side = "Foo"; // or "BUY" or "SELL" or whatever 
     var name = "NEITHER"; 
     switch (side) 
     { 
      case "BUY": 
       name = "LONG"; 
       break; 
      case "SELL": 
       name = "SHORT"; 
       break; 
      default: 
       throw new Exception(); 
     } 
     Console.WriteLine(name); 
    } 
} 

Working Fiddle here.

+0

Im Fall von" NITHER " Ich möchte einen Fehler machen. – kyounoii

+1

Das sollte mit "tue das nicht zu Hause" kommen :-) – zerkms

+0

@kyounoii Ich denke dann Ihre Vorgehensweise von if-sonst wenn-sonst ist am besten. Jeder termäre Ausdruck muss einen Wert desselben Typs erzeugen. –