Это допустимо в VB, но не в C # ... VB эффективно создает временную локальную переменную для вас, вызывает метод, передающий в качестве аргумента локальную переменную, а затем устанавливает свойство со значением локальной переменной , C # обычно не скрывает такого рода вещи для вас.
Самому методу требуется переменная в качестве параметра out
. У него должно быть хранилище, в которое можно просто записывать значения. Не собственность, не все, что нужно для вызова: просто место хранения. Свойство не удовлетворяет этому требованию. Так что компилятор в методе ничего не может сделать, чтобы это разрешить.
Таким образом, либо компилятор должен подделать его с помощью временной переменной согласно VB, либо запретить его согласно C #. Лично я предпочитаю подход C # - в противном случае он выглядит , как будто каждый раз, когда метод присваивает значение параметру out, свойство устанавливается - что, конечно, не так.