术语“取消引用”对象到底是啥意思?
Posted
技术标签:
【中文标题】术语“取消引用”对象到底是啥意思?【英文标题】:What exactly does mean the term "dereferencing" an object?术语“取消引用”对象到底是什么意思? 【发布时间】:2021-01-10 23:06:34 【问题描述】:我正在阅读 C# 8 中称为可空引用类型的新功能的描述。该描述讨论了所谓的 null-forgiving 运算符。描述中的示例谈到了引用类型实例的取消引用(我认为是这样):
Microsoft Docs
当您确定知道时,您也可以使用 null-forgiving 运算符 表达式不能为空,但编译器无法做到 认识到这一点。在以下示例中,如果
IsValid
方法 返回 true,它的参数不为空,您可以安全地取消引用 它: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-forgiving 运算符,编译器会生成
p.Name
代码的以下警告:警告CS8602
:取消引用 一个可能为空的引用。
我的印象是,在 C# 中取消引用一个对象意味着将其设置为 null。但看起来微软将访问对象的属性称为取消引用该对象。
问题是:当我们谈论引用类型实例时,C# 中的解引用术语是什么意思,而不是托管和非托管指针。
【问题讨论】:
问:c#取消引用一个对象意味着将其设置为null。答:不,绝对不是。 “取消引用对象”意味着“获取指针指向的变量”:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…。是的,“取消引用”适用于“引用类型实例”。 @paulsm4 我想说这是一个很好的答案,你应该把它移到一个答案以获得代表:-)。 【参考方案1】:取消引用意味着跟随引用来访问实际的底层对象。如果引用是null
,这会导致很大的问题。
【讨论】:
你好。如果引用为空,我们会遇到什么问题?你能给我一些链接吗?以上是关于术语“取消引用”对象到底是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
“语义”是啥意思?为啥“移动语义”这样命名,而不是任何其他术语?
JavaScript 回调中的术语“通过”或“通过”是啥意思?