2013-10-16 10 views

risposta

2

No, non c'è tale operatore in C#. Dovrai ripetere la variabile o l'espressione da confrontare.

non so il funzionario ragione perché un tale operatore non esiste in C#, ma ecco alcuni pensieri:

  1. Nessun altro linguaggio (che io sappia) ha uno, come tale è probabilmente non tutto ciò che è utile
  2. All features starts with -100 points, e ha bisogno di una buona giustificazione perché deve essere innalzato oltre la soglia necessaria per implementarla effettivamente, e dovrà anche giustificare farlo prima o invece di altre funzionalità. Dal momento che è così facile scrivere l'espressione comunque dubito che soddisfi tutti questi criteri.

È potrebbe (anche se io non credo che questo sarebbe una buona idea) creare un metodo di estensione:

void Main() 
{ 
    int foo = 5; 
    if (foo.Between(1, 10)) 
     Debug.WriteLine("> 1 and < 10"); 
    else 
     Debug.WriteLine("?"); 
} 

public static class Extensions 
{ 
    public static bool Between<T>(this T value, T lowNotIncluded, T highNotIncluded) 
     where T : struct, IComparable<T> 
    { 
     return value.CompareTo(lowNotIncluded) > 0 && value.CompareTo(highNotIncluded) < 0; 
    } 
} 

ma non lo consiglio questo. Una domanda da sollevare se si desidera seguire il percorso del metodo di estensione è come gestire tutte le combinazioni di >, >=, < e <=.

+0

Nessuna lingua ha un simile operatore? Il 68000 ha un'istruzione ** per farlo! ('CHK2'). – MSalters

+0

E guarda cosa gli è successo :) Perl ce l'ha, destinato a diventare anche una semplice nota storica. –

+0

Che dire del parser di un compilatore e/o dell'analizzatore lessicale? Particolarmente difficile da analizzare questa sintassi? – blt

2

Questo tipo di operatore non esiste in C#. Ma non lo userei comunque perché la leggibilità e l'intenzione del tuo codice non sono molto chiare. Invece avrei usato un metodo di estensione come questo:

// using extension method 
int number = 15; 
if (number.IsBetween(0, 12)) 
{ 
    ... 
} 

// definition of extension method 
public static bool IsBetween(this int num, int lower, int upper, bool inclusive = false) 
{ 
    return inclusive 
     ? lower <= num && num <= upper 
     : lower < num && num < upper; 
}