Why Does Visual Studio Add Nullable Annotation to New Arrays?
In C#, initializing an array with new generally returns a non-nullable typed value. However, after using the quick-fix in Visual Studio (VS) to replace var with the explicit type, the array declaration may contain a nullable annotation (?):
TVal[]? zeroBased = new TVal[size];
This annotation, added by VS, implies that the array could potentially be null.
Nullable Types in C# and VS
Nullable types are reference types introduced in C# 8.0 to allow variables to represent both non-nullable and null values. When Nullable is enabled in the project or #nullable pragma is used, VS may infer nullable reference types for reference-type variables declared with var. This inference applies even to arrays, which are reference types.
Reason for Nullable Annotation
The nullable annotation in the array declaration is a result of VS's interpretation of the code. According to the C# specification, var infers nullable reference types for reference types when nullable context is enabled. This is intended to prevent potential null assignments to variables, which are less obvious when using var.
Impact and Usage
In most cases, the nullable annotation on a newly created array is unnecessary. Arrays initialized with new are guaranteed to be non-null. However, if you intend to assign null to the array later in your code, you might want to keep the nullable annotation to avoid compilation errors.
Conclusion
While it may seem redundant to have a nullable annotation on newly created arrays, it is a consequence of VS inferring nullable types for var in nullable contexts. Keep in mind that this annotation is optional when creating arrays with new. However, if you intend to assign null to the array subsequently, it may be beneficial to retain the annotation to ensure type safety.
The above is the detailed content of Why Does Visual Studio Add Nullable Annotations to Newly Created Arrays in C#?. For more information, please follow other related articles on the PHP Chinese website!