(Translated by https://www.hiragana.jp/)
安全导航运算符 - 维基百科,自由的百科全书 とべ转到内容ないよう

安全あんぜん导航运算

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん

ざいめんこう对象ほどじょ设计なか安全あんぜん导航运算(safe navigation operator,也可しょうさくoptional chaining operator、safe call operator、null-conditional operator)一个二元运算符,ざいだい一个实参为空值时返回空值,いや则按あきらだい二个实参执行解引用(dereference)操作そうさ(典型てんけい如对ぞうなり员访问,すう索引さくいん,lambda调用)。

ざい编程语言ちゅう,导航运算(navigation operator,れい如 ".") 如果应用いたむなし对象しょうかい导致いち个错误。安全あんぜん导航运算ざい这种じょう况下かい中止ちゅうし对方ほうあるものだんてき链式もとめ值并かえしかいそら值。这避めんりょう顺序显式そら值检查。主要しゅよう优点避免りょう诅咒金字塔きんじとう现象。必写层嵌套if语句,编程しゃ以写正常せいじょうてき链式ひょう达式。

安全あんぜん导航运算あずかそら值结あい运算しゃみやこただしそら感知かんち运算(null-aware operator)。

かく语言れい[编辑]

C#[编辑]

C# 6.0及更しん版本はんぽん支持しじ?., さけべそら条件じょうけんなり员访问运さん(null-conditional member access operator),类似还有??そら值结あい运算)あずか?[]そら条件じょうけん元素げんそ访问运算)。如果なり员访问的结果值类がた,则应该是该类がたてきそらてき版本はんぽん[1]

れい如:

var name = articles?[0]?.Author?.Name;

调用lambda需要じゅようcallback?.Invoke()れい如:

var result = callback?.Invoke(args);

JavaScript[编辑]

从ECMAScript 2020开始支持しじ选链しき运算[2]

const name = article?.authors?.[0]?.name
const result = callback?.()

PHP[编辑]

安全あんぜんしるべこう運算うんざんPHP 8おこり開始かいし支援しえん[3]

$name = $article?->author?->name;

Python[编辑]

なお支持しじそら感知かんち运算[4]

TypeScript[编辑]

Typescript 3.7开始支持しじ选链しき运算[5]れい如:

let x = foo?.bar?.[0]?.baz();

Visual Basic .NET[编辑]

Visual Basic 14开始支持しじ?.あずか?() (そら值下标访问),类似于C#.[6]

れい如:

Dim name = articles?(0)?.Author?.Name

まいり[编辑]

参考さんこう文献ぶんけん[编辑]

  1. ^ Member access operators (C# reference). Microsoft Docs. Microsoft. [29 August 2019]. (原始げんし内容ないようそん档于2022-06-12). 
  2. ^ そん副本ふくほん. [2021-09-24]. (原始げんし内容ないようそん档于2021-12-07). 
  3. ^ PHP: rfc:nullsafe_operator. wiki.php.net. [2020-10-01]. (原始げんし内容ないようそん档于2022-05-31). 
  4. ^ PEP 505 -- None-aware operators. [2018-08-27]. (原始げんし内容ないようそん档于2022-02-24). 
  5. ^ Typescript 3.7. [2019-11-06]. (原始げんし内容ないようそん档于2022-06-09). 
  6. ^ ?. and ?() null-conditional operators (Visual Basic). Microsoft Docs. Microsoft. [29 August 2019]. (原始げんし内容ないようそん档于2022-05-18). 

外部がいぶ链接[编辑]