.NET 4.7 returning Tuples and nullable values : <p>Ok lets say I have this simple program in .NET 4.6:</p>

<pre><code>using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static async void Main()
        {
            var data = await Task.Run(() =&gt;
            {
                try
                {
                    return GetResults();
                }
                catch
                {
                    return null;
                }
            });

            Console.WriteLine(data);
        }

        private static Tuple&lt;int,int&gt; GetResults()
        {
            return new Tuple&lt;int,int&gt;(1,1);
        }
    }
}
</code></pre>

<p>Works fine. So with .NET 4.7 we have the new Tuple value type. So if I convert this it becomes:</p>

<pre><code>using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static async void Main()
        {
            var data = await Task.Run(() =&gt;
            {
                try
                {
                    return GetResults();
                }
                catch
                {
                    return null;
                }
            });

            Console.WriteLine(data);
        }

        private static (int,int) GetResults()
        {
            return (1, 2);
        }
    }
}
</code></pre>

<p>Great! Except it doesn't work. The new tuple value type is not nullable so this does not even compile. </p>

<p>Anyone find a nice pattern to deal with this situation where you want to pass a value type tuple back but the result could also be null?</p>
