<see />
和
<seealso />
最初是完全不同的标记,用于完全不同的目的,但今天(也许是为了认识到情况有多么令人困惑),它们在使用时几乎是相同的,至少是大多数人与它们交互的方式。显然,两者都存在,以便您可以链接到另一种类型或声明,以跨链接您的文档(或指向外部链接),但对于任何与Intellisense完成相关的内容,您应该使用
<see />
。
根据Microsoft有关代码中XML文档的文档,特别是
seealso
的部分:
“
<seealso>
标记可让您指定可能希望出现在“请参阅”部分中的文本。
<see>
用于指定从文本内部链接。您无法将
seealso
标记嵌套在
summary
标记内。”(强调添加)
看,最初
<see />
标记用于在intellisense完成中的正文中进行交叉引用或链接到外部资源,而
<seealso />
则具有完全不同的目的:在
生成的HTML文档(例如在旧式MSDN文档底部看到的那样)中添加链接/脚注。
<seealso />
不受核心
<summary>...</summary>
标记(在intellisense弹出窗口中看到的内容)的支持,在旧版本的编译器/旧版本的Visual Studio中,它不会呈现今天的方式。
仅使用原始<see />
这是一个使用
<see />
的xmldoc示例及其在Visual Studio中的呈现方式:
public class Foo {}
今天,如果使用
<seealso />
,也可以实现同样的效果,如下所示:
public class Foo {}
如果你要链接到外部内容,而不是在智能感知完成体中显示一个可能很长且难以控制的URL:
你可以使用替代符号来链接文本并改变显示的内容(就像HTML中的<a href="..." />
标签):
public class Foo { }
原始和当前的<seealso />
使用方式
所有之前的示例都可以使用<see />
或<seealso />
正常工作,尽管实际规范没有改变,但在<summary />
块中嵌套<seealso />
是100%错误的,因为它不是用于此目的。
那么<seealso />
到底有什么作用呢?自然而然地,我们会遵循Microsoft的指示,并将<seealso />
作为顶级标记使用,并尝试查看它是否以不同的方式呈现在Intellisense中:
public class Foo { }
...只发现在Visual Studio中查看时什么也没有发生:
但是您必须记住,微软最初推出了他们的版本的xmldoc以直接从源文件自动生成MSDN文档 - 并非所有xmldoc功能都适用于智能感知。现在,如果您使用HTML文档生成器(我使用了fxdoc,这是由Microsoft最初编写的,并且仍然被他们某些方式使用),您将看到以下内容:
<seealso />
的目的很明显——它并不直接为文档项目成员(
summary
标签)的立即描述做出贡献,但它告诉文档生成器将
<seealso />
标签保存起来,并在文档底部以“参见”部分的形式发出!最后需要注意的是,如果您在最终示例中用
<see>...</see>
替换
<seealso>...</seealso>
,可能会生成相同的结果,因为我认为Microsoft决定将它们视为相同,但根据上下文(是否在
<summary />
块或作为顶级标签中找到),它们的渲染方式不同。但是,如果您尝试一下(至少在docfx版本2.58.9.0之前),您将发现两者之间的实际差异的确切证据:如果将
<see />
用作顶级标签,则不会生成“参见”部分:
public class Foo { }