return (
Page is WebAdminPriceRanges ||
Page is WebAdminRatingQuestions
);
Czy istnieje sposób, aby zrobić to lubią:"jest" C# wiele opcji
return (
Page is WebAdminPriceRanges || WebAdminRatingQuestions
);
return (
Page is WebAdminPriceRanges ||
Page is WebAdminRatingQuestions
);
Czy istnieje sposób, aby zrobić to lubią:"jest" C# wiele opcji
return (
Page is WebAdminPriceRanges || WebAdminRatingQuestions
);
nr Pierwszy sposób określony jest jedynym rozsądnym sposobem, aby to zrobić .
Nie, takie składnia nie jest możliwe. Operator is wymaga 2 operandów, pierwszy to instancja obiektu, a druga to typ.
Można użyć GetType()
:
return new[] { typeof(WebAdminPriceRanges), typeof(WebAdminRatingQuestions) }.Contains(Page.GetType());
niezupełnie. Możesz wyszukać instancję Type
wewnątrz kolekcji, ale to nie uwzględnia niejawnych konwersji wykonywanych przez is
; na przykład is
również wykrywa, czy typ jest podstawową instancji, na której działa.
Przykład:
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;
Nie, C# nie jest język angielski, nie można pominąć jeden operand z eksploatacji dwóch argumentu.
Nie, nie możesz tego zrobić.
jeśli intencją jest zwrócić stronie, tylko jeśli jest typu WebAdminPriceRanges
lubWebAdminRatingQuestions
, można łatwo zrobić z jeśli.
Na przykład:
if(Page is WebAdminPriceRanges || Page is WebAdminRatingQuestions)
return Page;
return null;
zakładając, że strona jest odniesienia typu lub przynajmniej wartość pustych typ
Pozostałe odpowiedzi są prawdziwe, ale nie jestem pewien, gdzie pasuje operatorowi pierwszeństwo. Jeśli operator is jest mniejszy niż operator logiczny lub operator, łączyłbyś dwie klasy razem, co nie ma znaczenia.
Nie sądzę, że jest to możliwe i nie ma znaczenia. –
Operator is pobiera dwa operandy w języku C#. To naprawdę wszystko, co można powiedzieć. Jednak z odrobiną fantazji "może być" podobne do 'IsAnyOf (x, myListOfTypes)' (używałoby 'IsAssignableFrom' wewnątrz choć nie" jest ".) W rzeczywistości widziałem to już wcześniej w SO. (Spróbuj wyszukać 'IsAssingableFrom'.) –
np. http://stackoverflow.com/questions/3013694/use-of-isassignablefrom-and-is-keyword-in-c-sharp –