Конрад прав, C # постоянно использует двойные возвращаемые значения. Но мне нравятся методы TryParse, Dictionary.TryGetValue и т. Д. В C #.
int value;
if (int.TryParse("123", out value)) {
// use value
}
вместо
int? value = int.TryParse("123");
if (value != null) {
// use value
}
... в основном потому, что шаблон Nullable не масштабируется до возвращаемых типов, не являющихся значениями (т. Е. Экземпляры классов). Это не будет работать с Dictionary.TryGetValue (). И TryGetValue более приятен, чем KeyNotFoundException (нет «исключений первого шанса» постоянно в отладчике, возможно, более эффективен), приятнее, чем практика get () Java, возвращающая ноль (что, если ожидаются нулевые значения), и более эффективен, чем необходимость сначала вызовите ContainsKey ().
Но этот все еще немного странный - так как это похоже на C #, тогда он должен использовать параметр out. Весь прирост эффективности, вероятно, теряется при создании экземпляра класса.
(Может быть Java, за исключением того, что строковый тип находится в нижнем регистре. В Java, конечно, вы должны использовать класс для эмуляции двойных возвращаемых значений.)