C# ISymbol.DeclaringSyntaxReferences和ISymbol.Location之间的差异

C# ISymbol.DeclaringSyntaxReferences和ISymbol.Location之间的差异,c#,roslyn,roslyn-code-analysis,C#,Roslyn,Roslyn Code Analysis,属性和界面中的属性有什么区别?答案的线索在注释部分: 声明符号的语法节点。如果符号在元数据中声明或隐式声明,则返回空的只读数组 这意味着,Locations还返回元数据引用声明和隐式声明的位置。您可以在文件中看到这方面的证据: 其中,c是c类在: namespace N.S{class C{int F; void M(int P}{}} 因此,obj是System.Object。这是有意义的,因为您没有任何实际的源代码,因此在编译中没有定义System.Object的语法 namespace

属性和界面中的属性有什么区别?

答案的线索在
注释部分:

声明符号的语法节点。如果符号在元数据中声明或隐式声明,则返回空的只读数组

这意味着,
Locations
还返回元数据引用声明和隐式声明的位置。您可以在文件中看到这方面的证据:

其中,
c
c类
在:

namespace N.S{class C{int F; void M(int P}{}}
因此,
obj
System.Object
。这是有意义的,因为您没有任何实际的源代码,因此在编译中没有定义
System.Object
的语法

namespace N.S{class C{int F; void M(int P}{}}