以下のようなコードを書いたら

private static void Main()
{
    var l = new List<int> { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

    var hoge = Enumerable.Empty<(int?, int?)>();
    hoge = l.Select(x => (x, x));

    Console.ReadLine();
}

以下のように怒られた。

CS0266 型 ‘System.Collections.Generic.IEnumerable<(int, int)>’ を ‘System.Collections.Generic.IEnumerable<(int?, int?)>’ に暗黙的に変換できません。明示的な変換が存在します (cast が不足していないかどうかを確認してください)

分かるだろ!空気読めや!察せ!やんだくうきよめ!!

※英語

error CS0266: Cannot implicitly convert type ”System.Collections.Generic.IEnumerable<(int, int)>’ to ‘System.Collections.Generic.IEnumerable<(int?, int?)>’. An explicit conversion exists (are you missing a cast?)

◆結論

書いてある通りなんだけども、明示的な変換をしろ。

変換方法には2パターンあって、つまり変換できなかった時に例外吐いてほしいなら「(int?)x」だし、nullになって欲しい時は「x as int?」ですよね。

private static void Main()
{
    var l = new List<int> { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

    var hoge = Enumerable.Empty<(int?, int?)>();
    hoge = l.Select(x => (x as int?, (int?)x));

    Console.ReadLine();
}

まぁしょうがないと言えばしょうがないかと思う。勝手に型変換されるのも困るっつーかJavaScriptテメーいい加減にしなね。

◆結論

セブンイレブンのミルクフランスがうまかったんだけど、菓子パンは食うとなんかヤベーから月一くらいにしておく。あと、もっと硬くていいよ。硬いパンがすき。食うのに時間がかかる食品が好き。