Задать вопрос
@evolit
Вася

Есть ли возможность организовать общие переменные между некоторыми методами?

private void SomeCoolrMethod()
{
for (var i = 0; i < 90000; i++)
{
   var pamar1 = SetParam1();
   var pamar2 = SetParam2();
   var pamar3 = SetParam3();
   var pamar4 = SetParam4();
   var pamar5 = SetParam5();
   
   DoMethod1(param1, param3, param4);

   DoMethod2(param1,param2, param4);
   
   DoMethod3(param3,param4,param5);
}
}


Есть ли возможность вынести переменные "paramN" за границу "SomeCoolMethod" метода, но так, никакие другие методы,чтобы кроме "SomeCoolMethod" и "DoMethodN" не имели к ним доступ?

Этакий модификатор "private && only for methods(....)".
  • Вопрос задан
  • 2344 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@smet4ik
Почему например не упаковать это все в отдельный класс? И делать всю работу там?
class SomeCool
    {
        private T pamar1;
        private T pamar2;
        private T pamar3;
        ...

        private void SomeCoolrMethod()
        {
            for (var i = 0; i < 90000; i++)
            {
                var pamar1 = SetParam1();
                var pamar2 = SetParam2();
                var pamar3 = SetParam3();
                var pamar4 = SetParam4();
                var pamar5 = SetParam5();

                DoMethod1(param1, param3, param4);

                DoMethod2(param1, param2, param4);

                DoMethod3(param3, param4, param5);
            }
        }
    }
Ответ написан
Можно эти переменные и методы поместить в отдельный класс... классы для этого и придуманы. Насколько я могу судить у них должна быть общая идея и предназначение, если возникает такая необходимость.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
aush
@aush
Func Delegate:

void MyMethod()
{
    Func<int> pamar1 = () => 1 * 2;
    Func<int> pamar2 = () => 3 * 4;
    Func<int> pamar3 = () => 5 * 6;

    for (var i = 0; i < 10; ++i)
    {
        DoMethod(pamar1, pamar2, pamar3);
    }
}

void DoMethod(Func<int> pamar1, Func<int> pamar2, Func<int> pamar3)
{
    Console.WriteLine(pamar1() * pamar2() * pamar3());
}


Впрочем, я не уверен, что правильно понял ваш вопрос. Постарайтесь более связно сформулировать то, чего вы пытаетесь добиться.
Ответ написан
@dj_raphael
А чего вы боитесь? что разработчик другого метода в этом классе заюзает ваши переменные? Ну поругайте его что ли, объясните в комментариях суть класса, напишите тесты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы