Вы постоянно модифицируете прямоугольник одного и того же объекта. Это не может работать.
Вместо этого создайте список координат и перенесите одно и то же изображение в разные пункты назначения на основе этого списка.
Поскольку команда VB должна была поддержать прежнюю совместимость с более старым кодом (и программисты!)
, Если бы замыкание накоротко было поведением по умолчанию, поразрядный , операции неправильно интерпретировать компилятором.
, Почему мы представляли AndAlso и OrElse? Паноптикумом, Центральным
, Наша первая мысль была то, что логические операции намного более распространены , чем битовые операции, таким образом, мы должны сделать И и Или быть логическими операторами и добавить новые побитовые операторы под названием BitAnd, BitOr, BitXor и BitNot (последние два, являющиеся для полноты). Однако во время одной из бет стало очевидно, что это было довольно плохой идеей. Пользователь VB, который забывает, что новые операторы существуют и использование И когда он имеет в виду BitAnd и Или когда он имеет в виду BitOr, получил бы код, который компилирует, но приводит к "плохим" результатам.
Явное короткое замыкание удостоверяется, что левый операнд оценен сначала.
На некоторых языках кроме VB, логические операторы могут выполнить неявное короткое замыкание, но могут оценить правильный оператор сначала (зависящий, например, от сложности выражений в левом и в праве на логический оператор).
Я не нахожу, что замыкание накоротко полезно в каждом случае. Я использую его только при необходимости. Например, при проверке двух различных и не связанных переменных, это не требовалось бы:
If x > y And y > z Then
End If
, Поскольку статья Paul Vick иллюстрирует (см. ссылку, предоставленную Ken Browning выше), идеальный сценарий, в котором замыкание накоротко полезно, - когда объект имеет быть проверенным на существование сначала, и затем одно из его свойств должно быть оценено.
If x IsNot Nothing AndAlso x.Someproperty > 0 Then
End If
Так, по-моему, обе синтаксических опции очень требуются.