我什么时候应该在引用自身的属性上使用“NotNullIfNotNull”?

Chr*_*oph 7 c# nullable nullable-reference-types

在 class 中Microsoft.Net.Http.Headers.ContentRangeHeaderValue,有一个可以为 null 的值类型 property ( long?),它用NotNullIfNotNull引用自身的属性 (property Length) 进行修饰。

[NotNullIfNotNull(nameof(Length))]
public long? Length { get; private set; }
Run Code Online (Sandbox Code Playgroud)

该属性在值类型上下文中的用途是什么?与简单地省略属性声明有什么区别?

ojo*_*ima 2

根据定义如果指定参数的参数不为空,则返回值、属性或参数不为空。

用例场景:

有时,返回值的 null 状态取决于一个或多个参数的 null 状态。只要某些参数不为空,这些方法就会返回一个非空值。要正确注释这些方法,请使用 NotNullIfNotNull 属性。

示例或代码片段可以在此处找到。