如何调用下面的构造函数Func<如在SimplSocket(Func

本文关键字:Func SimplSocket 如在 System Sockets Socket IO 构造函数 调用 何调用 | 更新日期: 2023-09-27 18:16:07

我不熟悉这个API,但我试图创建一个新的构造函数,需要一个Func的参数,如下面的构造函数

所示
public SimplSocket(System.Func<System.Net.Sockets.Socket> socketFunc, 
                   int messageBufferSize, 
                   int maximumConnections, 
                   bool useNagleAlgorithm)  

如何处理socketFunc

如何调用下面的构造函数Func<如在SimplSocket(Func<System.IO.Sockets.Socket>

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);

如果你不想定义一个额外的函数,你可以使用lambda表达式直接表示函数:

var sock = new SimplSocket(() => new System.Net.Sockets.Socket(...), 1024,1,false);

构造函数本身可以使用委托socketFunc调用给定的函数,并且它知道该函数将返回System.Net.Sockets.Socket,但不知道使用哪个函数。它看起来就像这样:

 var aSock = socketFunc();