2012-05-23 13 views
5
return (
     Page is WebAdminPriceRanges || 
     Page is WebAdminRatingQuestions 
); 

Gibt es eine Möglichkeit, es zu tun:"ist" C# mehrere Optionen

return (
    Page is WebAdminPriceRanges || WebAdminRatingQuestions 
); 
+0

Ich glaube nicht, dass es möglich ist, und es ist bedeutungslos. –

+1

Der Operator is nimmt zwei Operanden in C#. Das ist wirklich alles, was es zu sagen gibt. Mit etwas Fantasie könnte "könnte" aber ähnlich sein wie "IsAnyOf (x, myListOfTypes)" (es würde intern "IsAssignableFrom" verwenden, nicht "is".) Tatsächlich habe ich das schon einmal auf SO gesehen. (Versuchen Sie, nach "IsAssingableFrom" zu suchen.) –

+0

z. http://stackoverflow.com/questions/3013694/use-of-isassignablefrom-and-is-keyword-in-c-sharp –

Antwort

1

Nr Der erste Weg Sie die einzige vernünftige Art und Weise festgelegt ist, dies zu tun .

3

Nein, solche Syntax ist nicht möglich. Der Operator is benötigt 2 Operanden, der erste ist eine Instanz eines Objekts und der zweite ist ein Typ.

könnten Sie GetType() verwenden:

return new[] { typeof(WebAdminPriceRanges), typeof(WebAdminRatingQuestions) }.Contains(Page.GetType()); 
3

Nicht wirklich. Sie können nach der Type Instanz innerhalb einer Auflistung suchen, aber das berücksichtigt nicht die impliziten Konvertierungen, die is durchführt; zum Beispiel erkennt is auch, ob der Typ eine Basis der Instanz ist, auf der er arbeitet.

Beispiel:

var types = new[] {typeof(WebAdminPriceRanges), typeof(WebAdminRatingQuestions)}; 

// this will return false if Page is e.g. a WebAdminBase 
var is1 = types.Any(t => t == Page.GetType()); 

// while this will return true 
var is2 = Page is WebAdminPriceRanges || Page is WebAdminRatingQuestions; 
1

Nein, C# ist nicht die englische Sprache, können Sie nicht einen Operanden aus einer Zwei-Operanden Operation auslassen.

0

Nein, das geht nicht.

wenn Ihr Absicht eine Seite zurückzukehren, nur wenn es vom Typ WebAdminPriceRangesoderWebAdminRatingQuestions, können Sie es leicht tun mit, wenn.

Zum Beispiel:

if(Page is WebAdminPriceRanges || Page is WebAdminRatingQuestions) 
    return Page; 
return null; 

die Seite Unter der Annahme ist ein Referenz Typ oder zumindest Nullable-Wert Typ

0

Die anderen Antworten sind wahr, aber ich bin mir nicht sicher, wo die Priorität des Operators liegt. Wenn der Operator is kleiner als der Operator logic-or ist, würden Sie zwei Klassen zusammen bilden, was bedeutungslos ist.

Verwandte Themen