<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#hideshow').click(function(){
$('#content').toggle('show');
});
});
</script>
И html
<div id='content'>Hello World</div>
<input type='button' id='hideshow' value='hide/show'>
Существует несколько опций:
Foo foo = (Foo)bar
as
оператор броска: Foo foo = bar as Foo
is
тест : bool is = bar is Foo
bar
быть безопасно брошен к Foo
(быстрый), и затем на самом деле сделать это (медленнее) или выдают исключение (действительно медленный). as
оператор должен проверить, может ли bar
быть брошен, то сделать бросок, или если он не может быть безопасно брошен, затем он просто возвращается null
. is
оператор просто проверяет, может ли bar
быть брошен Foo и возврату boolean
. is
тест быстр, потому что он только делает первую часть полной операции кастинга. as
оператор более быстр, чем классический бросок, потому что не выдает исключение, если состав исполнителей перестал работать (который делает это хорошим для ситуаций, где Вы законно ожидаете, что состав исполнителей мог бы перестать работать).
, Если просто необходимо знать, ли переменная bar
Foo
затем, используют is
оператор, , НО , если Вы собираетесь протестировать, если bar
Foo
, и если так, затем, бросает его , то необходимо использовать as
оператор.
По существу каждый бросок должен сделать эквивалент is
проверка внутренне для начала, чтобы удостовериться, что бросок допустим. Таким образом, если Вы делаете is
проверка, сопровождаемая полным броском (или as
, бросают, или с классическим оператором броска), Вы эффективно делаете эти is
проверка дважды, которая является небольшими дополнительными издержками.
Путем я узнал, что случается так что это:
if (obj is Foo) {
Foo f = (Foo)obj;
f.doSomething();
}
медленнее, чем это:
Foo f = obj as Foo;
if (f != null) {
f.doSomething();
}
это достаточно медленный для имения значение? Вероятно, не, но именно такая простая вещь обратить внимание для, Вы могли бы также сделать это.
Это должно быть достаточно быстро для не имения значение. При проверке типа достаточно объекта для него для оказывания значимого влияния на производительность, необходимо заново продумать дизайн
в основном эквивалентно "isinst" оператору IL - который та статья описывает как быстро.