Вы можете рассматривать ссылку как , создающую псевдоним для переменной .Дело не в том, что передаваемая вами переменная «передается по ссылке», а в том, что параметр и аргумент являются одной и той же переменной , только с двумя разными именами.Таким образом, обновление одного немедленно обновляет другое, потому что в действительности здесь нет двух вещей:
Как отмечает SLaks, в VB существуют ситуации, в которых используется семантика копирование-в-копирование.Также, если я правильно помню, бывают редкие и неясные ситуации, в которых деревья выражений могут быть скомпилированы в код, который выполняет копирование-в-копирование, но я не вспоминаю подробности.
Если этот код предназначен для обновления переменной для чтения в другом потоке, тот факт, что переменная «немедленно» обновляется, вводит в заблуждение.Помните, что в можно наблюдать, как множественные потоки, чтения и записи перемещаются вперед и назад во времени относительно друг друга, если чтения и записи не являются энергозависимыми .Если намерение состоит в том, чтобы использовать переменную в качестве механизма связи между потоками, они используют объект, фактически предназначенный для этой цели, который безопасен для этой цели.Используйте какой-нибудь дескриптор ожидания или мьютекс или что-то еще.