Метод в методе Execute

Автор: Sergey_Potehin

Метод в методе Execute - Mon Apr 15 2019 01:35 PM

Подскажите, почему при создании в теле метода Execute() другого метода и, соответственно, попытки его вызвать ТСлаб начинает ругаться? Внутри блока "Внешний скрипт" при этом пишет "нет подходящего обработчика".
Автор: ViL

Re: Метод в методе Execute - Mon Apr 15 2019 10:11 PM

Сложно сказать. Нужен пример, что делаете.
Автор: Sergey_Potehin

Re: Метод в методе Execute - Tue Apr 16 2019 03:06 PM

Да вот,например:

public void Execute(IContext ctx, ISecurity sec)
{

ExitLong()
{ }

//Усл.на вход
sec.Positions.BuyAtMarket(bar + 1, 1, "OL");
ExitLong()

}

Если создаю в теле класса (сразу после его объявления), то всё работает. Только в метод приходится кучу параметров передавать.
Автор: Sergey_Potehin

Re: Метод в методе Execute - Thu Apr 18 2019 05:16 PM

Что скажите,разработчики??
Автор: jhgjrht

Re: Метод в методе Execute - Thu Apr 18 2019 06:06 PM

Даже в русском языке слова пишутся строго определенным образом, а уж в языке программирования - все ещё строже. Не поставил точку с запятой, всё, давай до свидания. Компьютер не будет угадывать, что Вы там от него хотите.
Почитайте учебник по языку программирования C#. Про делегаты, про лямбда выражения.
Автор: Sergey_Potehin

Re: Метод в методе Execute - Sat Apr 20 2019 09:22 AM

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

class Program
{
static void Main(string[] args)
{

void Show()
{
Console.WriteLine("Hello");
}

Show();
Console.ReadKey();
}
}

Что в моем предыдущем примере ТСлабу не понравилось я не понимаю. Делегаты и лямбда выражения в примере не используются. Обычное создание и вызов метода.
Автор: jhgjrht

Re: Метод в методе Execute - Sat Apr 20 2019 02:10 PM

Не понравилась версия языка на которой пишете. Возможности C# версии 7.0 недоступны. Программа ориентирована на фреймворк версии: 4.6.2; C#: 6.0. Используйте делегаты или лямбда-выражения. Но при этом есть большой подводный камень связанный с "замыканием" переменных. Без опыта, лучше уж используйте отдельные функции.

using System;
class Program
{
static void Main(string[] args)
{
Action Show = () => Console.WriteLine("Hello");
Show();
Console.ReadKey();
}
}