Unlike what others in their comments said: No, there are no differences. Both of them produce the same IL.
Both
byte.TryParse(p.Value, out _);
Console.WriteLine(_);
and
byte.TryParse(p.Value, out var _);
Console.WriteLine(_);
will result in a compiler error with C # 7, as it is _not intended to be used.
Usage is _not limited to parameters, but can also be used for returns (as pointed out by Euc)
byte.TryParse(p.Value, out var _);
_ = SomeMethod();
There is an excellent answer, covering most things about missing parameters here .
: out _ out var _, out _ out var legalVariableName.
, . , . Ben Voigts .