指定委托参数的类型
specify type of delegate parameter
我正在尝试使用 TryGetValue
。
在 Method
中调用委托 我使用字典来 select 一个委托然后调用它。
字典类型是
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 not found 的错误,所以我决定使用 TryGetValue
这是没有 TryGetValue 的代码,如果所有键都找到,则可以正常工作。
Method(null, "mesh", () => _meshActions[_reader.LocalName](mesh));
编辑:请注意 action
不是委托之外的任何东西。我只想在 TryGetValue 中发送参数并使用它的结果。
这里是 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
}
}));
我正在尝试使用 TryGetValue
。
在 Method
中调用委托 我使用字典来 select 一个委托然后调用它。
字典类型是
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 not found 的错误,所以我决定使用 TryGetValue
这是没有 TryGetValue 的代码,如果所有键都找到,则可以正常工作。
Method(null, "mesh", () => _meshActions[_reader.LocalName](mesh));
编辑:请注意 action
不是委托之外的任何东西。我只想在 TryGetValue 中发送参数并使用它的结果。
这里是 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
}
}));