Автор: 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();
}
}