System.Func<System.Net.Sockets.Socket>
— это так называемый делегат. Они используются для хранения функций. В этом особом случае делегат принимает только функции, которые возвращают тип System.Net.Sockets.Socket
и не имеют аргументов. Например:
У вас есть функция, определенная где-то:
public System.Net.Sockets.Socket someFunction()
{
//whatever it does
}
Тогда вы можете сделать это:
var sock = new SimplSocket(someFunction, 1024,1,false);
Если вы не хотите определять дополнительную функцию, вы можете использовать лямбда-выражение для прямого выражения функции:
var sock = new SimplSocket(() => new System.Net.Sockets.Socket(...), 1024,1,false);
Сам конструктор может использовать делегат socketFunc
для вызова данной функции, и он знает, что функция вернет System.Net.Sockets.Socket
, но не знает, какая функция используется. Это будет просто выглядеть так:
var aSock = socketFunc();
person
T_D
schedule
01.08.2014
SimplSocket
, подклассировать его или перегрузить другой конструктор? - person Kirk Woll   schedule 02.08.2014socketFunc
. - person Kirk Woll   schedule 02.08.2014