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

ようにそれを行うにはそこの方法です:は、C#の複数のオプション "で"

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

私は可能ではないと思うし、無意味です。 –

+1

is演算子はC#で2つのオペランドをとります。それは本当にすべてが言いたいことです。しかし、ちょっと考えてみると、IsAnyOf(x、myListOfTypes)と似ているかもしれません( 'isAssignableFrom'を内部的に使っていますが' is 'ではありません)。 (IsAssingableFromを検索してみてください。) –

+0

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

答えて

3

いいえ、そのような構文はできません。 is演算子には2つのオペランドが必要です。最初はオブジェクトのインスタンス、2番目はオペランドです。

あなたはGetType()を使用することができます。

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

そうでもないし。コレクション内でTypeインスタンスを探すことはできますが、isが実行する暗黙的な変換は考慮されません。たとえば、isは、そのタイプが操作対象のベースであるかどうかを検出します。

例:いいえ、C#は、英語の言語ではありません

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

、あなたは2オペランドの操作から1つのオペランドを省略することはできません。

0

いいえ、できません。

あなた意図は、それがタイプのWebAdminPriceRangesまたはWebAdminRatingQuestionsであれば、あなたは簡単場合でそれを行うことができる唯一の、ページを返すある場合。例えば

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

そのページと仮定するとあなたが指定した最初の方法はこれを行うための唯一の合理的な方法である参照タイプまたは少なくともNULL可能値タイプ

0

他の回答は当てはまりますが、オペレータの優先順位がどこに当てはまるか分かりませんが。 is演算子が論理演算子よりも低い場合は、2つのクラスを一緒にしていると意味がありません。

関連する問題