C#将参数传递给委托

C#将参数传递给委托,c#,C#,您好,我对C#语法有点问题 现在我将四个参数传递给一个名为WriteConfig var task = fac.StartNew(() => { vault.WriteConfig(fileName, id, queue, DeleteUploadQueue); }); DeleteUploadQueue是一个委托,在WriteConfig中以id作为参数调用。我想做的是将id传递到DeleteUploadQueue外部而不是内部WriteConfig,这样我就不必将id传递到Writ

您好,我对C#语法有点问题

现在我将四个参数传递给一个名为
WriteConfig

 var task = fac.StartNew(() => { vault.WriteConfig(fileName, id, queue, DeleteUploadQueue); });
DeleteUploadQueue
是一个委托,在
WriteConfig
中以
id
作为参数调用。我想做的是将
id
传递到
DeleteUploadQueue
外部而不是内部
WriteConfig
,这样我就不必将
id
传递到
WriteConfig

WriteConfig
如下所示:

 public void WriteConfig(string fileName, int id, BlockingCollection<byte[]> queue, Action<int> deleteFunc)
public void WriteConfig(字符串文件名、int-id、BlockingCollection队列、Action deleteFunc)
但是我不能想出正确的语法

谢谢你的帮助

听起来像是你想要的

var task = fac.StartNew(() => { vault.WriteConfig(fileName, id, queue,
    () => DeleteUploadQueue(id)); })
因此,如果您还想将
WriteConfig
更改为不获取
int-id
,则需要将
deleteFunc
改为
Action
,而不是
Action
,因此:

public void WriteConfig(string fileName, BlockingCollection<byte[]> queue,
    Action deleteFunc)
听起来像是你想要的

var task = fac.StartNew(() => { vault.WriteConfig(fileName, id, queue,
    () => DeleteUploadQueue(id)); })
因此,如果您还想将
WriteConfig
更改为不获取
int-id
,则需要将
deleteFunc
改为
Action
,而不是
Action
,因此:

public void WriteConfig(string fileName, BlockingCollection<byte[]> queue,
    Action deleteFunc)

假设您将签名更改为:

public void WriteConfig(string fileName, BlockingCollection<byte[]> queue, Action deleteFunc)

假设您将签名更改为:

public void WriteConfig(string fileName, BlockingCollection<byte[]> queue, Action deleteFunc)

你是从什么角度看的。您应该在调用委托时为其提供参数,而不是在定义委托时。我假设这发生在您的
WriteConfig
-方法中:

WriteConfig(string fileName, int id, BlockingCollection<byte[]> queue, Action<int> deleteFunc)
{
    /* ... */
    deleteFunc(id) <------- provide your args here
}

你是从什么角度看的。您应该在调用委托时为其提供参数,而不是在定义委托时。我假设这发生在您的
WriteConfig
-方法中:

WriteConfig(string fileName, int id, BlockingCollection<byte[]> queue, Action<int> deleteFunc)
{
    /* ... */
    deleteFunc(id) <------- provide your args here
}