C# 这是什么语法;我的方法<;S、 R>&引用;?

C# 这是什么语法;我的方法<;S、 R>&引用;?,c#,.net-3.5,C#,.net 3.5,回顾我正在做的这个项目,遇到了一些我不太理解的代码 \u 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 {

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

\u 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);
            }
        }
    }
公共作废运行(操作,S,R t)
{
if(监视器TryEnter(_sync,wait))
{
尝试
{
行动(s,t);
}
捕获(例外情况除外)
{
ErrorHandlers.LogVerbose(“UI.Shell”,“无法输入事件(1)”,ex);
}
最后
{
如果(!\u isDisposing)
监视器。退出(_sync);
}
}
}
Run
还有另一个重载,它只包含示例中的前两个参数


方法名称和动作参数中的
是什么?我推断它们是允许“不明确”参数(
s
t
)的某种泛型类型,但我不知道s或R是如何设置的。

是的,这是一种泛型方法,
s
R
由调用代码定义。因此,对于您发布的示例,
S
sender
(最有可能是
object
)的类型,
R
args
(最有可能是
EventArgs
)的类型


操作
是一个接受两个参数但不返回任何内容的委托。需要返回值的委托是
Func
,其中
TResult
是返回值的类型。

--既然您怀疑这些是泛型,为什么不阅读您的教科书,甚至MSDN上的文档?问Qs关于基本语言特征的问题不是如何学习它们。@DavidHeffernan我想我不知道这个词。而且在工作中,我手头没有书。显然你知道这个词。问题就在这里。我们喜欢帮助,但我们更愿意帮助那些试图帮助自己的人。