diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobReader.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobReader.cs index e73f1431ffdb15..dc170aa3c1663f 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobReader.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobReader.cs @@ -311,14 +311,18 @@ public double ReadDouble() public Guid ReadGuid() { - const int size = 16; - byte* ptr = GetCurrentPointerAndAdvance(size); + byte* ptr = GetCurrentPointerAndAdvance(sizeof(Guid)); + +#if NET + return new Guid(MemoryMarshal.CreateReadOnlySpan(ref *ptr, sizeof(Guid))); +#else if (BitConverter.IsLittleEndian) { return *(Guid*)ptr; } else { + Debug.Assert(sizeof(Guid) == 16); unchecked { return new Guid( @@ -328,6 +332,7 @@ public Guid ReadGuid() ptr[8], ptr[9], ptr[10], ptr[11], ptr[12], ptr[13], ptr[14], ptr[15]); } } +#endif } ///