首页 > 解决方案 > 这个例子使用delegate()的确切含义是什么?

问题描述

我不太喜欢C# (我来自 Java),我对与此示例相关的委托方法的工作原理有以下疑问:

List<string> urlList = IndirizziProtocolliSQL.GetListaIndirizziSiti(dbConfig);

foreach (string currentUrl in urlList)
{
    Debug.Print("Current url: " + currentUrl);

    SPSecurity.RunWithElevatedPrivileges(delegate ()
    {
        using (SPSite oSiteCollection = new SPSite(currentUrl))
        {
            using (SPWeb oWebsite = oSiteCollection.OpenWeb())
            {
            }
        }
    });
}

据我了解阅读官方文档: https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/

delegate()用于将方法作为另一个方法的输入参数传递。

例如,如果我有类似的东西:

public delegate int MyDelegate (string s);

这意味着是对具有此方法签名(返回类型、方法名称、输入参数)的任何方法的引用。

如果它是正确的,那么我的第一个原始示例到底意味着什么?为什么我有一个using(...){...}块的方法签名?

这种语法的确切含义是什么?

标签: c#

解决方案


只是表示将delegate () { }匿名内联方法/委托传递给函数。该方法的主体就像任何 C# 代码块一样,可以包含using语句或任何其他语句。

这将类似于:

private void Method()
{
    using (SPSite oSiteCollection = new SPSite(currentUrl))
    {
        using (SPWeb oWebsite = oSiteCollection.OpenWeb())
        {
        }
    }
});

SPSecurity.RunWithElevatedPrivileges(Method);

推荐阅读