powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# использование своства func в методе
6 сообщений из 6, страница 1 из 1
c# использование своства func в методе
    #38923408
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Помогите пожалуйста разобраться с примером:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
private Func<object, int> FuncMetod = TestFunc;
private static int TestFunc(object o)
{
     if (o is string) return 1;
     if (o is bool) return 2;
     return 0;
}

public void InMetod(TestFunc par1) // Как TestFunc использовать? Подскажите пожалуйста
{
}
...
Рейтинг: 0 / 0
c# использование своства func в методе
    #38923451
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,

Записано у вас неверно. Надо так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
private Func<object, int> FuncMetod = TestFunc;

private static int TestFunc(object o)
{
	if (o is string) return 1;
	if (o is bool) return 2;
	return 0;
}

public void InMetod(Func<object,int> par1)   // Как TestFunc использовать? Подскажите пожалуйста
{
	par1(new object());
	// или
	par1.Invoke(new object());
}
...
Рейтинг: 0 / 0
c# использование своства func в методе
    #38923454
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И туда же:
Код: c#
1.
2.
3.
4.
public void Go()
{
	InMetod(FuncMetod);
}
...
Рейтинг: 0 / 0
c# использование своства func в методе
    #38923480
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, я как-то по другому представлял использования Func.

А разве нельзя как нибудь на лету использовать ответ из FuncMetod?
К примеру
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Чтобы ответ из FuncMetod сразу ложился в параметр par1.
public void InMetod(Func<object,int> par1) 

// А не так
public void InMetod(Func<object,int> par1) 
{
	par1(new object());
	// или
	par1.Invoke(new object());
}
...
Рейтинг: 0 / 0
c# использование своства func в методе
    #38923546
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
par1 - это всего лишь ссылка на метод. Это как указатели в C/C++: они лишь содержат адрес функции, на которую они ссылаются, но не являются самой функцией. И функции не могу "содержать" ответ просто так - её надо вызвать. :)
...
Рейтинг: 0 / 0
c# использование своства func в методе
    #38923565
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясню так.
1) "Func<object, int> FuncMetod". Func - это делегат, который указывает на функцию, принимающую object и возвращающую int. FuncMethod - это переменная этого делегата.
2) FuncMetod = TestFunc. Это значит, что FuncMethod ссылается на метод TestFunc (можно прикрутить сколько угодно функций к делегату с помощью "+=" в C#).

Можно через лямбду всё это написать:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void Go()
{
	InMetod((o) =>
	{
		if (o is string) return 1;
		if (o is bool) return 2;
		return 0;
	});
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# использование своства func в методе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]