Опциональное возвращаемое значение
От: igna Россия  
Дата: 23.05.09 07:58
Оценка: 1 (1)
Иногда результатом работы метода являются два значения, причем первое всегда используется вызывающим кодом, второе — только в некоторых случаях. Это второе значение можно сделать невидимым для кода, которому оно не нужно, поместив оба значения-результата в struct и определив операцию неявного преобразования к типу первого значения:

struct FResult {
    public int Required { get; private set; }
    public int Optional { get; private set; }
    public FResult(int required, int optional)
        : this() { Required = required; Optional = optional; }
    public static implicit operator int(FResult result) {
        return result.Required;
    }
}

FResult F() {
    . . .
    return new FResult( . . .
}

void G() {
    int i = F();
    . . .
}

void H() {
    FResult r = F();
    int i = r.Required;
    int j = r.Optional;
    . . .
}


Возражения принимаются.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.