为什么lambda表达式没有返回值?

Dol*_*hin 0 c# lambda

我读了一个代码来发送电子邮件,这里是其中的一部分:

MailUserState state = new MailUserState()
{
    AutoReleaseSmtp = m_autoDisposeSmtp,
    CurMailMessage = mMailMessage,
    CurSmtpClient = m_SmtpClient,
    IsSmpleMail = true,
    UserState = AsycUserState,
};
if (m_autoDisposeSmtp)
  m_SmtpClient = null;

ThreadPool.QueueUserWorkItem((userState) =>
{
    MailUserState curUserState = userState as MailUserState;
    curUserState.CurSmtpClient.SendAsync(mMailMessage, userState);
}, state);
Run Code Online (Sandbox Code Playgroud)

为什么lambda表达式没有返回值?

我认为它应该返回一个callback实例对象.但它没有返回语句.为什么?

Dar*_*rov 7

为什么lambda表达式没有返回值?

ThreadPool.QueueUserWorkItem方法的第一个参数是一个WaitCallback委托,如下所示:

public delegate void WaitCallback(object state)
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到它是一个带有一个对象参数且没有返回值的函数.这正是代码中的lambda表达式.QueueUserWorkItem如果/当可用时,该方法将从线程池中绘制一个线程,它将在该线程的回调中执行代码.没有回报价值.