C#のvarによる宣言では、サフィックスで型を明示しない場合、値の大きさに応じて型が暗黙的に選択されます。 例として、0x_7FFF_FFFF以下の値はint0x_8000_0000以上の値はuint0x_1_0000_0000以上の値はlongといったように、代入時にオーバーフローが起こらないような型が暗黙的に選択されます。

明示的に型を指定しない場合、値の大きさによって暗黙的に型指定される
using System;

static class Sample {
  static void Main()
  {
    // サフィックスによって型を明示しない場合、値の大きさに応じて適切な型が選ばれる
    var i  = 0x7FFFFFFF; // int型・System.Int32
    var ui = 0x80000000; // uint型・System.UInt32
    var l  = 0x7FFFFFFF_FFFFFFFF; // long型・System.Int64
    var ul = 0x80000000_00000000; // ulong型・System.UInt64

    Console.WriteLine($"{nameof(i)}  ({i.GetType()}) : value = {i}");
    Console.WriteLine($"{nameof(ui)} ({ui.GetType()}) : value = {ui}");
    Console.WriteLine($"{nameof(l)}  ({l.GetType()}) : value = {l}");
    Console.WriteLine($"{nameof(ul)} ({ul.GetType()}) : value = {ul}");
  }
}
実行結果
i  (System.Int32) : value = 2147483647
ui (System.UInt32) : value = 2147483648
l  (System.Int64) : value = 9223372036854775807
ul (System.UInt64) : value = 9223372036854775808