对象"dereferencing"术语到底是什么意思?



我正在阅读C#8中名为可为null的引用类型的新特性的描述。该描述讨论了所谓的零容忍运算符。描述中的例子谈到了引用类型实例的去引用(我认为是这样(:

Microsoft文档

当您确定表达式不能为null,但编译器无法认识到这一点。在以下示例中,如果IsValid方法返回true,其参数不为null,可以安全地取消引用it:

public static void Main() 
{
Person? p = Find("John");
if (IsValid(p))
{
Console.WriteLine($"Found {p!.Name}");
} 
}
public static bool IsValid(Person? person) 
{
return person != null && !string.IsNullOrEmpty(person.Name); 
}

如果没有null宽容运算符,编译器将生成以下针对p.Name代码的警告:警告CS8602:取消引用可能为空的引用。

我的印象是,在C#中,取消引用对象意味着将其设置为null。但看起来微软把访问对象的属性称为取消引用对象。

问题是:当我们谈论引用类型实例,而不是托管和非托管指针时,C#中的去引用术语是什么意思。

取消引用意味着跟随引用访问实际的底层对象。如果引用是null,这将导致一个大问题。

相关内容

  • 没有找到相关文章

最新更新