using System.Threading.Tasks;
public static void Main()
Console.WriteLine("1:" + typeof(ValueTask).IsAssignableFrom(typeof(ValueTask<>)));
Console.WriteLine("2:" + typeof(ValueTask).IsAssignableFrom(typeof(ValueTask<int>)));
Console.WriteLine("3:" + typeof(ValueTask<>).IsAssignableFrom(typeof(ValueTask<>)));
Console.WriteLine("4:" + typeof(ValueTask<int>).IsAssignableFrom(typeof(ValueTask<int>)));
Console.WriteLine("5:" + typeof(ValueTask<>).IsAssignableFrom(typeof(ValueTask)));
Console.WriteLine("6:" + typeof(ValueTask<int>).IsAssignableFrom(typeof(ValueTask)));
Console.WriteLine("7:" + typeof(ValueTask<>).IsAssignableFrom(typeof(ValueTask<>)));
Console.WriteLine("8:" + typeof(ValueTask<int>).IsAssignableFrom(typeof(ValueTask<int>)));
Console.WriteLine("9:" + typeof(ValueTask<>).IsAssignableFrom(typeof(ValueTask<int>)));
Console.WriteLine("10:" + typeof(ValueTask<int>).IsAssignableFrom(typeof(ValueTask<>)));
Console.WriteLine("11:" + typeof(ValueTask<int>).IsGenericType);
Console.WriteLine("12:" + typeof(ValueTask<int>).BaseType);
Console.WriteLine("13:" + typeof(ValueTask<int>).Name);
Console.WriteLine("14:" + ValueTaskMethod().Result);
Console.WriteLine("15:" + ValueTaskAsyncMethod().Result);
public static ValueTask<int> ValueTaskMethod()
return new ValueTask<int>(10);
public static async ValueTask<int> ValueTaskAsyncMethod()
await Task.Delay(100).ConfigureAwait(false);