Visual Studio文档注释中的Lambda

3
在c#中使用函数可以像这样添加文档注释:
///<summary>
///
///</summary>
///<param name=""></param>
///<returns></returns>

在使用普通函数时,有一个自动生成的“this”。然而,当使用Lambda时,什么也没有发生。有没有一种方法可以在Lambda中使用文档注释?


1
我认为你做不到。 - Phiter
1
附注 - 这是针对Visual Studio的,不是C#。我已经相应地更新了标签和标题。 - Igor
6
如果你的Lambda表达式足够复杂需要文档说明,你可以将它们定义为“普通”函数,这样你就可以获得想要的注释。 - Hans Kilian
2个回答

2
许多lambda表达式不需要您编写文档,因为它已经存在。
例如,如果您向Where子句提供lambda表达式,则函数已在此处(尽管没有太多细节)进行了文档记录: predicate 类型:System.Func 用于测试每个元素是否满足条件的函数。
我建议,如果您有一个扩展方法或其他类型的代码,以lambda表达式作为参数传递,那么记录其输入和输出的适当位置是使用它的方法,而不是设置它的代码。
另一方面,如果您需要记录lambda的内部工作方式(即它非常复杂),我建议您将其实现为符合签名的标准c#方法。
因此,不是
Users
.Where( r => {
    DoSomethingComplicated();
    MoreCode();
    return FinalResult();
});

您只需编写:

Users.Where( MyFunction )

然后在其他地方定义函数:

/// <summary>
/// This function calls DoSomethingComplicated and MoreCode
/// </summary>
/// <returns> A Boolean specifying whether the user should be included </returns>
bool MyFunction(User user)
{
    DoSomethingComplicated();
    MoreCode();
    return FinalResult();
}

0

首先,目前还没有任何方法可以使用///来记录lambda或其等效项。

稍作解释:

通常,lambda不应该太复杂以至于难以理解或阅读。如果是这样的话,最好将其提取为完整的函数或方法,然后您可以添加///进行注释,与您通常所使用的摘要或所需内容一起。因此,我认为不需要为lambda编写“文档”注释,这种情况也很不可能发生。

附注

Lambda简言之就是匿名函数,因此即使您将其提取为单独的函数,除非您复制大型对象而不是通过引用传递它们,否则在性能方面并没有太大差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接