タグ付けされた質問 「null-coalescing-operator」

null結合演算子(PHP 7では??)は、null許容値型または参照型のデフォルト値を定義するために使用されます。オペランドがnullでない場合は、左側のオペランドを返します。それ以外の場合は、正しいオペランドを返します。


12
JavaScriptに「null合体」演算子はありますか?
JavaScriptにnull合体演算子はありますか? たとえば、C#では、これを行うことができます。 String someString = null; var whatIWant = someString ?? "Cookies!"; 私がJavaScriptについて理解できる最善の近似は、条件演算子を使用することです。 var someString = null; var whatIWant = someString ? someString : 'Cookies!'; それはちょっとイッキーな私見です。もっと上手にできますか?

5
奇妙なnull融合演算子のカスタムの暗黙的な変換動作
注:これはRoslynで修正されたようです 私の答えを書くときにこの質問は生まれたこの1の関連性について語る、nullで合体演算子。 念のため、null融合演算子の考え方は、フォームの式 x ?? y 最初にを評価しx、次に: の値xがnullの場合、y評価され、それが式の最終結果になります 値があればx非ヌルである、yされていない評価され、値がxのコンパイル時の型に変換した後、発現の最終的な結果であり、y必要に応じて 今、通常、変換の必要はありません、またはそれは、非NULL可能1にNULL可能タイプからだけだ-通常のタイプが同じである、または単に(と言う)からint?にint。ただし、独自の暗黙の変換演算子を作成でき、それらは必要に応じて使用されます。 の単純なケースではx ?? y、奇妙な動作は見たことがありません。しかし、(x ?? y) ?? z私はいくつかの混乱した行動を見ています。 以下は短いが完全なテストプログラムです-結果はコメントにあります: using System; public struct A { public static implicit operator B(A input) { Console.WriteLine("A to B"); return new B(); } public static implicit operator C(A input) { Console.WriteLine("A to C"); return new …


11
PythonでC#のnull結合演算子に相当するものはありますか?
C#には、割り当て中にnullを結合する演算子(として記述??)があり、割り当て時に(短い)nullチェックを簡単に行うことができます。 string s = null; var other = s ?? "some default value"; 同等のPythonはありますか? 私ができることを知っています: s = None other = s if s else "some default value" しかし、もっと短い方法はありsますか(繰り返す必要がない場合)?


10
?? 空の文字列を結合しますか?
私がますますやっていることは、文字列が空かどうかをチェックすることです( ""またはnullなど)と条件演算子のです。 現在の例: s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber; これは単なる拡張メソッドであり、以下と同等です。 string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber; 空であり、nullで??はないため、トリックを実行しません。のstring.IsNullOrEmpty()バージョン??最適なソリューションになります。これを行うにはよりクリーンな方法が必要だと思います(私は願っています!)が、それを見つけるのに途方に暮れています。 .Net 4.0のみであっても、これを行うためのより良い方法を誰かが知っていますか?

16
Null Coalescingオペレーターを使用するユニークな方法[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2か月前に閉鎖。 この質問を改善する C#でNull融合演算子を使用する標準的な方法は、デフォルト値を設定することです。 string nobody = null; string somebody = "Bob Saget"; string anybody = ""; anybody = nobody ?? "Mr. T"; // returns Mr. T anybody = somebody ?? "Mr. T"; // returns "Bob Saget" しかし、他に何??が使用できますか?三項演算子ほど便利ではないようですが、次の点よりも簡潔で読みやすくなっています。 nobody = null; anybody = nobody == null ? "Bob Saget" …

9
PHPの結合関数?
多くのプログラミング言語には、合体関数があります(最初の非NULL値を返す、例)。PHPは、残念ながら2009年には機能しません。 PHP自体が合体関数を取得するまで、PHPに実装する良い方法は何でしょうか?

10
null値をチェックする適切な方法は何ですか?
null結合型の演算子にデフォルト値を簡単に割り当てることができるため、null結合演算子が大好きです。 int y = x ?? -1; それは素晴らしいことですが、で簡単なことをする必要がある場合は例外ですx。たとえば、を確認したい場合、Session通常はもっと冗長なものを書く必要があります。 私はこれを行うことができればいいのに: string y = Session["key"].ToString() ?? "none"; しかし.ToString()、nullチェックの前にが呼び出されるため、Session["key"]nullの場合は失敗するため、これはできません。私はこれをやる: string y = Session["key"] == null ? "none" : Session["key"].ToString(); それは機能し、私の意見では、3行の代替よりも優れています。 string y = "none"; if (Session["key"] != null) y = Session["key"].ToString(); それがうまくいくとしても、もっと良い方法があるかどうか私はまだ興味があります。私がいつも何Session["key"]回参照しなければならないかは関係ありません。1回はチェックのため、もう1回は割り当てのためです。何か案は?


4
式ツリーラムダには、null伝播演算子を含めることはできません
質問:price = co?.price ?? 0,次のコードの行は、上記のエラーを表示します。しかし、私は削除する場合?からco.?、それは罰金に動作します。私は、彼らがオンラインで使用しているこのMSDNの例に従おうとしてい?ました。select new { person.FirstName, PetName = subpet?.Name ?? String.Empty };したがって、いつ使用?するか??、いつ使用しないかを理解する必要があるようです。 エラー: 式ツリーラムダには、null伝播演算子を含めることはできません public class CustomerOrdersModelView { public string CustomerID { get; set; } public int FY { get; set; } public float? price { get; set; } .... .... } public async Task<IActionResult> ProductAnnualReport(string rpt) { …

12
ヌル合体演算子の「反対」はありますか?(…任意の言語で?)
nullの合体は、おおよそ return x, unless it is null, in which case return y 私はしばしば必要です return null if x is null, otherwise return x.y 私は使えます return x == null ? null : x.y; 悪くはありませんが、nullその真ん中はいつも私を悩ませます-それは不必要に思えます。return x :: x.y;次のようなものは、その::前にあるものが評価されない場合にのみ評価されるようなものを好みますnull。 私はこれを見るほぼ【種類簡潔との混合での、ヌル合体とは反対側、インラインヌルチェック、私はよほとんど ]特定のC#には、オペレータがないこと。 そのような演算子を持つ他の言語はありますか?もしそうなら、それは何と呼ばれていますか? (私はそのメソッドをC#で記述できることを知っています。私はを使用しreturn NullOrValue.of(x, () => x.y);ますが、もっと良いものがあれば、それも見たいと思います。)

3
?[]とは何ですか?C#の構文?
で実際に抽象クラスであるデリゲートを研究しているときに、Delegate.cs理解できない次のメソッドを見ました 戻り値が?すでにreference(class)型であるにもかかわらず使用する理由 ?[]? パラメータの意味 説明してもらえますか? public static Delegate? Combine(params Delegate?[]? delegates) { if (delegates == null || delegates.Length == 0) return null; Delegate? d = delegates[0]; for (int i = 1; i < delegates.Length; i++) d = Combine(d, delegates[i]); return d; }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.