# System.Runtime.CompilerServices ``` diff namespace System.Runtime.CompilerServices { + public sealed class CallerArgumentExpressionAttribute : Attribute { + public CallerArgumentExpressionAttribute(string parameterName); + public string ParameterName { get; } + } + public sealed class CppInlineNamespaceAttribute : Attribute { + public CppInlineNamespaceAttribute(string dottedName); + } + public sealed class IDispatchConstantAttribute : CustomConstantAttribute { + public IDispatchConstantAttribute(); + public override object Value { get; } + } + public static class IsExternalInit public enum MethodImplOptions { + AggressiveOptimization = 512, } + public sealed class ModuleInitializerAttribute : Attribute { + public ModuleInitializerAttribute(); + } + public sealed class PreserveBaseOverridesAttribute : Attribute { + public PreserveBaseOverridesAttribute(); + } public static class RuntimeFeature { + public const string CovariantReturnsOfClasses = "CovariantReturnsOfClasses"; + public const string UnmanagedSignatureCallingConvention = "UnmanagedSignatureCallingConvention"; } public static class RuntimeHelpers { + public static IntPtr AllocateTypeAssociatedMemory(Type type, int size); } + public sealed class SkipLocalsInitAttribute : Attribute { + public SkipLocalsInitAttribute(); + } public sealed class SwitchExpressionException : InvalidOperationException { + public override string Message { get; } } + public static class Unsafe { + public unsafe static void* Add(void* source, int elementOffset); + public static ref T Add(ref T source, int elementOffset); + public static ref T Add(ref T source, IntPtr elementOffset); + public static ref T AddByteOffset(ref T source, IntPtr byteOffset); + public static bool AreSame(ref T left, ref T right); + public static T As(object o) where T : class; + public static ref TTo As(ref TFrom source); + public unsafe static void* AsPointer(ref T value); + public unsafe static ref T AsRef(void* source); + public static ref T AsRef(in T source); + public static IntPtr ByteOffset(ref T origin, ref T target); + public unsafe static void Copy(void* destination, ref T source); + public unsafe static void Copy(ref T destination, void* source); + public static void CopyBlock(ref byte destination, ref byte source, uint byteCount); + public unsafe static void CopyBlock(void* destination, void* source, uint byteCount); + public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount); + public unsafe static void CopyBlockUnaligned(void* destination, void* source, uint byteCount); + public static void InitBlock(ref byte startAddress, byte value, uint byteCount); + public unsafe static void InitBlock(void* startAddress, byte value, uint byteCount); + public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount); + public unsafe static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount); + public static bool IsAddressGreaterThan(ref T left, ref T right); + public static bool IsAddressLessThan(ref T left, ref T right); + public static bool IsNullRef(ref T source); + public static ref T NullRef(); + public unsafe static T Read(void* source); + public static T ReadUnaligned(ref byte source); + public unsafe static T ReadUnaligned(void* source); + public static int SizeOf(); + public static void SkipInit(out T value); + public unsafe static void* Subtract(void* source, int elementOffset); + public static ref T Subtract(ref T source, int elementOffset); + public static ref T Subtract(ref T source, IntPtr elementOffset); + public static ref T SubtractByteOffset(ref T source, IntPtr byteOffset); + public static ref T Unbox(object box) where T : struct; + public unsafe static void Write(void* destination, T value); + public static void WriteUnaligned(ref byte destination, T value); + public unsafe static void WriteUnaligned(void* destination, T value); + } } ```