2016-11-15 2 views

Antwort

12

Sie könnte eine Erweiterung wie folgt schreiben:

public static class GenericExtensions 
{ 
    public static bool In<T>(this T @this, params T[] listOfItems) 
    { 
     if (null == listOfItems) return false; 
     return listOfItems.Contains(@this); 
    } 
} 

und es dann gerne verwenden:

if (2.In(1,2,3,4))

+5

Alles ist besser mit Erweiterungsmethoden :-) –

+1

und vielleicht, überprüfen Sie meine nugget-Paket dafür: https://www.nuget.org/packages/IronSphere.Extensions/ gibt es viele Erweiterungen, wie diese :) - und ich wird in Zukunft noch mehr hinzufügen. –

+0

@MatthiasBurger könnten Sie bitte mehr erklären? Meine Rückkehr Int.System32 enthält keine Definition für In. Entschuldigung für die ungeschickte Frage, zum ersten Mal mit der Erweiterung. – SAM

4

MATLAB Stil nicht als Teil der Sprache“ "aber Sie können ein Array verwenden und IndexOf

var items = new []{2,4,6}; 
if(items.IndexOf(stars) > -1) 
{ 
    // do something 
} 

oder ähnlich mit Contains

var items = new List<int>{2,4,6}; 
if(items.Contains(stars)) 
{ 
    // do something 
} 
+2

Am Ende ist es eine Frage des persönlichen Geschmacks, aber ich bevorzuge die Contains-Version. Es scheint mir sauberer und selbsterklärender zu sein. – Gertsen

+0

@Gertsen mich auch, aber es ist ein bisschen Schwergewicht, wie eine Liste erfordert. – Jamiec

+0

Stimmt, aber es ist leicht lesbar, und das ist auch wichtig. Jeder kann Code machen, den ein Computer lesen kann. Code zu machen, den Menschen leicht lesen können, ist viel schwieriger. – Gertsen

Verwandte Themen