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