extern别名在C#中的作用是什么?
为了解决C#中程序集之间的名称空间冲突,我给了其中一个别名extern别名在C#中的作用是什么?,c#,.net,namespaces,C#,.net,Namespaces,为了解决C#中程序集之间的名称空间冲突,我给了其中一个别名NLog: 现在,我可以引用该程序集中的名称空间,如下所示: public class Logger : NLog::NLog.LogReceiverService { // ... } 但是,在我使用文件顶部的extern alias关键字之前,这不会编译: extern alias NLog; 我的问题: 外部别名关键字的作用是什么?NLog::NLog.LogReceiverService是否足以完全消除我所指的程序集别
NLog
:
现在,我可以引用该程序集中的名称空间,如下所示:
public class Logger : NLog::NLog.LogReceiverService
{
// ...
}
但是,在我使用文件顶部的extern alias
关键字之前,这不会编译:
extern alias NLog;
我的问题:
外部别名
关键字的作用是什么?NLog::NLog.LogReceiverService
是否足以完全消除我所指的程序集别名、命名空间和类型的歧义?在引用上设置alias属性只会将其指定为该别名,而程序集引用的初始加载是作为运行时为项目完成的。为了在文件中使用该别名程序集引用,必须通过extern alias关键字指定要使用它,该关键字设置编译器指令以查找该别名
您可能会认为它们会有某种类型的全局别名,但我认为它们会强制使用显式别名,因为别名会受到性能影响
以下是有关extern alias的参考资料:注意:是的,有许多StackOverflow文章以及博客文章概述了如何消除具有相同完全限定类型的两个程序集之间的歧义。他们基本上都说使用extern alias关键字,但没有说明原因。我的问题是为什么编译器需要extern alias关键字,而别名::
应该足够了。