指定委托参数的类型
本文关键字:类型 参数 | 更新日期: 2023-09-27 17:55:29
>im 尝试使用 TryGetValue
.
在里面调用一个委托Method
我使用字典选择一个委托,然后调用它。
字典类型为
Dictionary<string, Action<Mesh>> _meshActions;
操作类型为
Action<Mesh>
所以在这里我似乎无法在委托参数中正确声明action
。
Method(null, "mesh", ( action => //How to specify type of action
{
_meshActions.TryGetValue(_reader.LocalName, out action);
try { action(mesh); }
catch
{
//do nothing
}
}));
编译器希望out
类型Action<Mesh>
但如何设置action
类型?
在使用TryGetValue
之前,我正常使用字典
但是因为有时我找不到Key的错误,所以我决定使用TryGetValue
这是没有 TryGetValue 的代码,如果所有键都找到,则工作正常。
Method(null, "mesh", () => _meshActions[_reader.LocalName](mesh));
编辑:请注意,action
不是委托之外的任何东西。 我只想在 TryGetValue 中发送参数并使用它的 resault。
这是Method
private static void Method(string enterElement, string exitElement, Action loadElement)
{
while (_reader.Read())
{
if (StateElement(State.Enter, enterElement))
{
loadElement.Invoke();
}
else if (StateElement(State.Exit, exitElement))
{
return;
}
}
}
action
需要在委托中本地声明,而不是作为参数声明。
Method(null, "mesh", ( () => //How to specify type of action
{
Action<Mesh> action;
_meshActions.TryGetValue(_reader.LocalName, out action);
try { action(mesh); }
catch
{
//do nothing
}
}));