ArgumentNullException says ‘parameter is null’. Which parameter?
// Old way - manual parameter name
public void Process(User user)
{
if (user == null)
throw new ArgumentNullException(nameof(user));
}
// New way - automatic! (C# 10+)
public void Process(User user)
{
ArgumentNullException.ThrowIfNull(user);
// Error message includes actual expression: 'user'
}
// Custom validation
public void ValidatePositive(
int value,
[CallerArgumentExpression("value")] string? paramName = null)
{
if (value <= 0)
throw new ArgumentException($"{paramName} must be positive");
}
// Usage
ValidatePositive(count);
// Error: 'count must be positive' (not 'value')
