c# - 这个例子使用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(...){...}块的方法签名?
这种语法的确切含义是什么?
解决方案
只是表示将delegate () { }
匿名内联方法/委托传递给函数。该方法的主体就像任何 C# 代码块一样,可以包含using
语句或任何其他语句。
这将类似于:
private void Method()
{
using (SPSite oSiteCollection = new SPSite(currentUrl))
{
using (SPWeb oWebsite = oSiteCollection.OpenWeb())
{
}
}
});
SPSecurity.RunWithElevatedPrivileges(Method);
推荐阅读
- python - 使用日期偏移量修改数据框
- android - 如何让我的银色背景在颤动中旋转
- jquery - JQuery 提交时模型为空
- r - 如何根据多个 if 条件生成虚拟变量
- laravel - Laravel cron 作业在 localhost 中运行,但不在我与 cpanel 的共享主机中
- momentjs - 如何从当地时间获取 _i 字符串?(以 7 十进制毫秒获取本地时间的方法)
- coq - 使用 Coq 场公理
- angular - Angular/Visual Studio Code -“导出类名”上的错误
- string - 如何在 React Native 中压缩字符串?
- apache-kafka - Broken Pipe 错误后 Kafka 不会重新加入集群