这是什么语法"myMethod<S, R>"?



回顾我正在做的这个项目,遇到了一些我不太理解的代码......

_monitor.Run(RaiseEvent, sender, args); 转到定义 上 Run 带我到这个:

    public void Run<S, R>(Action<S, R> action, S s, R t)
    {
        if (Monitor.TryEnter(_sync, wait))
        {
            try
            {
                action(s, t);
            }
            catch(Exception ex)
            {
                ErrorHandlers.LogVerbose("UI.Shell", "Failed to Enter Event (1)", ex);
            }
            finally
            {
                if (!_isDisposing)
                    Monitor.Exit(_sync);
            }
        }
    }

Run还有另一个重载,它只是只有示例中的前两个参数。

方法名称和Action参数中的<S, R>是什么?我推断它们是某种通用类型,允许"模棱两可"的参数(st (,但我看不到 S 或 R 在哪里/如何设置。

是的

,这是一个泛型方法,其中SR由调用代码定义。因此,对于您发布的示例,Ssender的类型(很可能是object(,Rargs的类型(最轻EventArgs(。

Action<S, R>是一个接受两个参数但不返回任何内容的委托。需要返回值的委托是 Func<T, TResult> ,其中 TResult 是返回值的类型。

最新更新