2016-08-04 1 views

Antwort

4

Der Hinweis auf die Antwort ist in dem <remarks> Kommentarbereich:

Die Syntax Knoten (n), die das Symbol erklärt. Wenn das Symbol in Metadaten deklariert wurde oder implizit deklariert wurde, wird ein leeres schreibgeschütztes Array zurückgegeben.

Das bedeutet, dass Locations auch Metadaten-Referenzdeklarationen und implizit deklarierte Speicherorte zurückgibt. Sie können Belege für die in der LocationsTests.cs Datei sehen:

var c = s.GetTypeMembers("C", 0).Single() as NamedTypeSymbol; 
var obj = c.BaseType; 
Assert.Equal("MetadataFile(CommonLanguageRuntimeLibrary)", obj.Locations[0].ToString()); 

wo c ist die class C in:

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

so objSystem.Object ist. Dies ist sinnvoll, weil Sie keinen tatsächlichen Quellcode haben und daher Syntax, in der Kompilierung, die System.Object definieren würde.