Ghi
Quyền truy cập vào trang này yêu cầu sự cho phép. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Quyền truy cập vào trang này yêu cầu sự cho phép. Bạn có thể thử thay đổi thư mục.
| Property | Value |
|---|---|
| Rule ID | CA2264 |
| Title | Do not pass a non-nullable value to ArgumentNullException.ThrowIfNull |
| Category | Usage |
| Fix is breaking or non-breaking | Non-breaking |
| Enabled by default in .NET 10 | As warning |
Cause
When a value that's known to never be null is passed to ArgumentNullException.ThrowIfNull(), an exception is never thrown, making the statement a no-op.
Rule description
ArgumentNullException.ThrowIfNull throws when the passed argument is null. Certain constructs like non-nullable structs (except for Nullable<T>), type parameters known to be non-nullable structs, 'nameof()' expressions, and 'new' expressions are known to never be null, so ArgumentNullException.ThrowIfNull will never throw.
In the case of a struct, since ArgumentNullException.ThrowIfNull accepts an object?, the struct is boxed, which causes an additional performance penalty.
How to fix violations
Remove the ArgumentNullException.ThrowIfNull call.
Example
The following code snippet shows a violation of CA2264:
static void Print(int value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value);
}
The following code snippet fixes the violation:
static void Print(int value)
{
Console.WriteLine(value.Value);
}
When to suppress warnings
It's always safe to suppress this warning.
Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264
To disable the rule for a file, folder, or project, set its severity to none in the configuration file.
[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none
For more information, see How to suppress code analysis warnings.