Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, andrey.bond, Вы писали:
AB>>А можно посмотреть код? Уж больно заинтересовала меня это ваша функция...
А>ИМХО ф-й которые возвращают значение, но оно редко используется много в фрейморке. К примеру, MessageBox.Show("Test");
А>Мой код примерно следующий:
А>А> Base reductionBase(ref Base _base1, ref Base _base2)
А> {
А> // согласованное изменение полей в _base1, _base2 в зависимости от их величин по определенному алгоритму
А> // локальные переменные в которых хранятся результаты согласования полей
А> return new Result(локальные_переменные_в_которых_хранятся_результаты_согласования_полей);
А> //Result, в дальнейшем нужен не всегда
А> }
А>
Если Result тебе не всегда нужен, а создание лишнего экземпляра тебя так беспокоит, я так понял что Result это очень громоздкий объект и его создание занимает много времени. Тогда зачем-же ты его создаешь когда это не нужно?
Сделал бы так:
public class SmartAndFastReductor
{
private class Reductor
{
// переменные в которых хранятся результаты согласования полей
public void reductionBase(ref Base _base1, ref Base _base2)
{
// согласованное изменение полей в _base1, _base2 в зависимости от их величин по определенному алгоритму
// вместо локальных переменных используются переменные класса Reductor
}
public Base Result { get { return new Result(переменные_класса_Reductor_в_которых_хранятся_результаты_согласования_полей); } }
}
public Base ReductionBaseWithResult(ref Base _base1, ref Base _base2)
{
Reductor reductor = new Reductor();
reductor.reductionBase(ref _base1, ref _base2);
return reductor.Result; // экземпляр Result будет создаваться только в случае крайней необходимости
}
public void ReductionBaseWithoutResult(ref Base _base1, ref Base _base2)
{
Reductor reductor = new Reductor();
reductor.reductionBase(ref _base1, ref _base2);
}
}
Когда не нужно создание Result — вызывай ReductionBaseWithoutResult и тогда время не будет тратиться на медленную операцию создания Result...
... << RSDN@Home 1.2.0 alpha rev. 676>>