ISymbol之间的差异.声明SyntaxReferences和ISymbol.位置
本文关键字:ISymbol SyntaxReferences 位置 声明 之间 | 更新日期: 2023-09-27 18:00:58
ISyntax接口中的DeclaringSyntaxReferences属性和Locations属性之间有什么区别?
答案的线索在<remarks>
注释部分:
声明该符号的语法节点。如果符号是在元数据中声明的或是隐式声明的,则返回一个空的只读数组。
这意味着,Locations
还返回元数据引用声明和隐式声明的位置。你可以在LocationsTests.cs文件中看到这方面的证据:
var c = s.GetTypeMembers("C", 0).Single() as NamedTypeSymbol;
var obj = c.BaseType;
Assert.Equal("MetadataFile(CommonLanguageRuntimeLibrary)", obj.Locations[0].ToString());
其中c
是中的class C
namespace N.S{class C{int F; void M(int P}{}}
所以CCD_ 5是CCD_。这是有道理的,因为在编译中没有任何实际的源代码,因此也没有定义System.Object
的语法。