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