Сообщение Re[5]: Что такой анонимный метод(функция)? от 18.11.2019 15:07
Изменено 18.11.2019 15:44 Silver_S
Re[5]: Что такой анонимный метод(функция)?
Здравствуйте, nt2000, Вы писали:
N>анон.ф-ия === ф-ия без заголовка === только тело ф-ии === кусок кода
N>Раз анон.ф-ия есть ф-ия без заголовка то есть только тело ф-ии читай кусок кода
N>тогда почему бы не "..передать как параметр в другую функцию.." просто кусок кода?
А как предлагаешь в такую функцию передавать кусок кода?:
Это и так зоопарк. ИМХО, лучше только один вариант использовать () =>
N>Или всё же это не ф-ия без заголовка, а нечто другое? чё скрываете?! давай-те уже колитесь..
Компилятор ее превращает в обычную функцию, дает ей свое корявое имя, чтобы не совпало с твоими функциями.
Код в другую функцию никогда не передается(как бы это в тексте программы ни выглядело), передаются только указатели на функции.
Теоретически есть возможность передать в функцию именно код, в виде теста программы или уже откомпилированный и исполнить.
Но если только начал изучать C# то считай — это радикальные хакерские трюки, с большими накладными расходами, и сам C# их не поддерживает.
N>анон.ф-ия === ф-ия без заголовка === только тело ф-ии === кусок кода
N>Раз анон.ф-ия есть ф-ия без заголовка то есть только тело ф-ии читай кусок кода
N>тогда почему бы не "..передать как параметр в другую функцию.." просто кусок кода?
А как предлагаешь в такую функцию передавать кусок кода?:
static void Func(Action a)
{
a();
}
Func( Console.WriteLine("1"); Console.WriteLine("2"); ); //Так были бы проблемы, противоречия в синтаксисе.
Func( {Console.WriteLine("1"); Console.WriteLine("2");} ); //Так тоже были бы проблемы, скорее всего.
//Сейчас можно только так сделать:
Func( delegate{Console.WriteLine("1"); Console.WriteLine("2");} );
Func( delegate(){Console.WriteLine("1"); Console.WriteLine("2");} );
Func( () => {Console.WriteLine("1"); Console.WriteLine("2");} );
Это и так зоопарк. ИМХО, лучше только один вариант использовать () =>
N>Или всё же это не ф-ия без заголовка, а нечто другое? чё скрываете?! давай-те уже колитесь..
Компилятор ее превращает в обычную функцию, дает ей свое корявое имя, чтобы не совпало с твоими функциями.
Код в другую функцию никогда не передается(как бы это в тексте программы ни выглядело), передаются только указатели на функции.
Теоретически есть возможность передать в функцию именно код, в виде теста программы или уже откомпилированный и исполнить.
Но если только начал изучать C# то считай — это радикальные хакерские трюки, с большими накладными расходами, и сам C# их не поддерживает.
Re[5]: Что такой анонимный метод(функция)?
Здравствуйте, nt2000, Вы писали:
N>анон.ф-ия === ф-ия без заголовка === только тело ф-ии === кусок кода
N>Раз анон.ф-ия есть ф-ия без заголовка то есть только тело ф-ии читай кусок кода
N>тогда почему бы не "..передать как параметр в другую функцию.." просто кусок кода?
А как предлагаешь в такую функцию передавать кусок кода?:
Это и так зоопарк. ИМХО, лучше только один вариант использовать () =>
N>Или всё же это не ф-ия без заголовка, а нечто другое? чё скрываете?! давай-те уже колитесь..
Компилятор ее превращает в обычную функцию, дает ей свое корявое имя, чтобы не совпало с твоими функциями.
Код в другую функцию никогда не передается(как бы это в тексте программы ни выглядело), передаются только указатели на функции.
Теоретически есть возможность передать в функцию именно код, в виде теста программы или уже откомпилированный и исполнить.
Но если только начал изучать C# то считай — это радикальные хакерские трюки, с большими накладными расходами, и сам C# их не поддерживает.
N>анон.ф-ия === ф-ия без заголовка === только тело ф-ии === кусок кода
N>Раз анон.ф-ия есть ф-ия без заголовка то есть только тело ф-ии читай кусок кода
N>тогда почему бы не "..передать как параметр в другую функцию.." просто кусок кода?
А как предлагаешь в такую функцию передавать кусок кода?:
static void Func(Action a)
{
a();
}
Func( Console.WriteLine("1"); Console.WriteLine("2"); ); //Так были бы проблемы, противоречия в синтаксисе.
Func( {Console.WriteLine("1"); Console.WriteLine("2");} ); //Так тоже были бы проблемы, скорее всего.
//Сейчас можно только так сделать:
Func( delegate{Console.WriteLine("1"); Console.WriteLine("2");} );
Func( delegate(){Console.WriteLine("1"); Console.WriteLine("2");} );
Func( () => {Console.WriteLine("1"); Console.WriteLine("2");} );
Это и так зоопарк. ИМХО, лучше только один вариант использовать () =>
N>Или всё же это не ф-ия без заголовка, а нечто другое? чё скрываете?! давай-те уже колитесь..
Компилятор ее превращает в обычную функцию, дает ей свое корявое имя, чтобы не совпало с твоими функциями.
Код в другую функцию никогда не передается(как бы это в тексте программы ни выглядело), передаются только указатели на функции.
Теоретически есть возможность передать в функцию именно код, в виде теста программы или уже откомпилированный и исполнить.
Но если только начал изучать C# то считай — это радикальные хакерские трюки, с большими накладными расходами, и сам C# их не поддерживает.