# System.Runtime.CompilerServices ``` diff namespace System.Runtime.CompilerServices { + public struct AsyncIteratorMethodBuilder { + public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine; + public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine; + public void Complete(); + public static AsyncIteratorMethodBuilder Create(); + public void MoveNext(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine; + } + public sealed class AsyncIteratorStateMachineAttribute : StateMachineAttribute { + public AsyncIteratorStateMachineAttribute(Type stateMachineType); + } + public sealed class CallerArgumentExpressionAttribute : Attribute { + public CallerArgumentExpressionAttribute(string parameterName); + public string ParameterName { get; } + } public sealed class ConditionalWeakTable : IEnumerable, IEnumerable> where TKey : class where TValue : class { - ~ConditionalWeakTable(); } + public readonly struct ConfiguredAsyncDisposable { + public ConfiguredValueTaskAwaitable DisposeAsync(); + } + public readonly struct ConfiguredCancelableAsyncEnumerable { + public ConfiguredCancelableAsyncEnumerable ConfigureAwait(bool continueOnCapturedContext); + public ConfiguredCancelableAsyncEnumerable.Enumerator GetAsyncEnumerator(); + public ConfiguredCancelableAsyncEnumerable WithCancellation(CancellationToken cancellationToken); + public readonly struct Enumerator { + public T Current { get; } + public ConfiguredValueTaskAwaitable DisposeAsync(); + public ConfiguredValueTaskAwaitable MoveNextAsync(); + } + } + public sealed class EnumeratorCancellationAttribute : Attribute { + public EnumeratorCancellationAttribute(); + } + public sealed class IDispatchConstantAttribute : CustomConstantAttribute { + public IDispatchConstantAttribute(); + public override object Value { get; } + } public enum MethodImplOptions { + AggressiveOptimization = 512, } public static class RuntimeFeature { + public const string DefaultImplementationsOfInterfaces = "DefaultImplementationsOfInterfaces"; + public static bool IsDynamicCodeCompiled { get; } + public static bool IsDynamicCodeSupported { get; } } public static class RuntimeHelpers { + public static T[] GetSubArray(T[] array, Range range); } + public sealed class SwitchExpressionException : InvalidOperationException { + public SwitchExpressionException(); + public SwitchExpressionException(Exception innerException); + public SwitchExpressionException(object unmatchedValue); + public SwitchExpressionException(string message); + public SwitchExpressionException(string message, Exception innerException); + public override string Message { get; } + public object UnmatchedValue { get; } + public override void GetObjectData(SerializationInfo info, StreamingContext context); + } + 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 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 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); + } } ```