ОК, я не эксперт по C #, так что если я все испорчу, пожалуйста, поправьте меня?
Существует два способа передачи параметра в функцию C #: по значению и по ссылке. Здесь большая разница в том, изменяет ли параметр внутри функции переменную, используемую для ее вызова. Это не то, что я бы доверил компилятору, который решит сам.
Поскольку вы хотите, чтобы oDate была переменной, переданной от вызывающей стороны и измененной, вы хотите, чтобы она передавалась по ссылке.
Другой вопрос: нужно ли его инициализировать или нет. C # любит отлавливать, когда переменные используются неинициализированными, поскольку это почти всегда ошибка. В этом случае вы можете просто объявить, что вы передаете, и использовать TryParse (), чтобы присвоить ему первое значение. Это совершенно законная методика, поэтому компилятор должен это разрешить. Это еще одна вещь, которую я бы не доверял компилятору, чтобы получить права. (Я предполагаю, что компилятор также проверяет, что перед использованием в TryParse () инициализируется выходной параметр.)
Итак, «out» служит двум целям. Он устанавливает, что параметр передается по ссылке, и ожидается, что он будет инициализирован внутри функции. Ни один из них не может быть определен компилятором.