問題タブ [null-coalescing-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 関数の結果の null 値をチェックする
この質問に対する彼の回答で、BlackBear は を置き換えることを提案しました。
と
が文字列値の場合Session["key"]
はうまく機能しますが、これをオブジェクトで実行したい場合はどうすればよいでしょうか? たとえば、私はこれを行うことができます:
GetMyObject()
しかし、 2 回評価したくない場合はどうすればよいでしょうか。結果を変数に格納し、その変数で null をチェックする唯一の選択肢はありますか?
編集:これはすべて理論上のものです。以前に遭遇したことがありますが、今のところ具体的な例はありません。そうは言っても、ここにサンプルクラスがあります。
もしそうならstring y = (GetMyObject() ?? "none").ToString();
、私は得る
演算子「??」タイプ 'MyObject' および 'string' のオペランドには適用できません。
理想的には、私はできるだろう
GetMyObject() が null の場合でも動作するようにします。基本的に、自己完結型として機能する null 合体演算子try {} catch (NullReferenceException) {}
。できないことはわかっていますが、それが理想です。
c# - C# 合体演算子
文字列プロパティを持つクラスがあります。nullの可能性があるため、読み取るときに合体演算子を使用しますが、それでもNullRefrenceExeptionがスローされます。
より具体的には、「.ParentSection」がnullなので、「.name」さえないためですか?その場合、最初に if ブロックで ".ParentSection" をテストする必要がありますか?
Coalesce オペレーターについて、私が理解できない何かがあると思います。
c# - null 許容型で合体 null 演算子を使用すると、暗黙的な型が変更されます
次の 3 行のコードは同じだと思います。
いずれの場合も、nullableDateTime
新しい変数に代入します。DateTime?
の型であるため、すべての変数の型が になることを期待しますnullableDateTime
。しかし、驚いたことに、 の型はdateTimeWhatType
になるだけDateTime
なので、nullable ではありません。
さらに悪いことに、ReSharper は 2 番目のステートメントを null 合体式に置き換えて式 3 にすることを提案しています。したがって、ReSharper にその処理を行わせると、変数の型が から に変更さDateTime?
れDateTime
ます。
実際、メソッドの残りの部分では、
ReSharper に 2 番目の式を null 合体バージョンに置き換えるまでは、問題なくコンパイルできます。
AFAIK、交換
と
実際、同じ結果が得られるはずです。しかし、null 許容型の暗黙的な型指定の場合、コンパイラは??
それが意味するかのように脅威を与えるようです。
したがって、私の質問は、を使用すると暗黙の型が変更される理由と??
、ドキュメントのどこでこれに関する情報を見つけることができるかということだと思います。
??
ところで、これは現実世界のシナリオではありませんが、使用すると (暗黙の) 型が変更される理由を知りたいです。
c# - c# この行はどういう意味ですか?
誰か次のコードを説明してreturn total ?? decimal.Zero
くれませんか?
以下の意味でしょうか?
javascript - JavaScript / CoffeeScriptで配列を合体させる方法は?
静的なアイテムのセットを合体させるのは簡単です。
しかし、未知の長さの配列を合体させる簡単な方法はありますか?私が思いついた最も簡単なものはこれ(CoffeeScript)でした:
単純なリストの場合は問題ありませんが、
- 理想的に
coalesce
は繰り返し処理する必要がありますが、をarguments
サポートしていません。reduce
- 配列に関数が含まれている場合は、関数自体ではなく戻り値を返したい場合があります(これは私のユースケースです)。
Guffaのソリューションに基づいて、CoffeeScriptバージョンを次に示します。
テストインcoffee
:
プリント
c# - C#スレッドセーフのnull合体演算子(??)はありますか?
次のコードに競合状態が発生する可能性がありNullReferenceException
ますか?
- また -
Callback
null合体演算子がnull値をチェックした後、関数が呼び出される前に、変数がnullに設定される可能性はありますか?
編集
これは好奇心から生まれた質問です。私は通常、このようにコーディングしません。
Callback
変数が古くなる心配はありません。Exception
から投げ出されるのが心配ですDoCallback
。
編集#2
これが私のクラスです:
メソッドDoCallbackIfElse
には、NullReferenceException
. DoCallbackCoalesce
メソッドは同じ条件を持っていますか?
そして、ここにIL出力があります:
演算子call UserQuery+MyClass.get_Callback
を使用すると 1 回だけ呼び出され、 を使用すると 2 回呼び出されるように見えます。私は何か間違ったことをしていますか???
if...else
powershell - PowerShellでのヌル合体
PowerShellにnull合体演算子はありますか?
これらのc#コマンドをPowerShellで実行できるようにしたいと思います。
javascript - JavaScript null 条件式
重複の可能性:
JavaScript の null 合体演算子?
C# では、次のことができます。
つまり、 null でない場合は assignnewObject
に割り当てます。これをjavascriptで書くにはどうすればいいですか?obj
defaultObject
scala - リフレクションを使用しない Scala で `??` (C# の null 合体演算子) を実装することは可能ですか?
C# null 合体演算子 '??' の実装をどこかで見つけました。
a ?? b
その後、 which meansのように使用できますif (a == null) b else a
。
クラス ファイルを逆コンパイルした後、リフレクションを含むコードが生成されることがわかりました (Scala 2.8.1)。
リフレクションを生成する理由と、リフレクションを生成しないようにそのコードを変更することは可能ですか?
c# - Coalesce potentially Empty LINQ query results
Im using Linq to return IDs from 4 cascading dropdown menus.
The user may have selected 1 or more values from either 1 or all of the menus. From the users selections, Im then quering the text columns of a DataTable for the representative IDs.
If the user selects from the 4th (and lowest level) dropdown, then they would have selected from all those above.
If the user selects "X" from menu 1, "Y" from menu 2, and nothing in the others i would expect to see results1
with say 10 rows where "X" exists in [Col_1], which would then be queried down to say 5 rows in results2
where "Y" exists in [Col_2].
EDIT The Code (in a basic form)
#xA;results4
depends on the results from results3
, results3
on results2
, and results2
on results1
.
It may be that results4 - 2
are empty , and therefore I was wondering if I could coalesce these into a final variable, eg:
This is throwing the error:
#xA;Does anyone have any cunning ideas how to resolve this? Im trying not to write very long winded code, handling every possible outcome.
Thank you all in advance (hopefully the question makes sense!)
CM