トップ回答者
null coalescing operator (Null結合演算子)って、VBにありますか?

質問
-
毎々お世話になっております。 おぎわらでございます。
C#2.0では、 ??演算子(null coalescing operator )という便利な演算子が使えるのですが、
VB2005って、それに該当するものってないのでしたっけ?
C#でに使用例
int y = x ?? -1;
// x が null のとき yには -1 が代入される
// その他は y には x が代入されるConsole.WriteLine(s ?? "ヌル");
// s が null のときは "ヌル" が出力される
// そのほかは s の値出力
VBも 1行で書けたら幸せ・・・・
回答
-
なさげですね。
The Truth about Nullable Types and VB... http://www.panopticoncentral.net/archive/2004/06/04/1180.aspx
上のブログの記事はちょっと古いですけど、「The Visual Basic .NET Programming Language (Microsoft Net Development Series) 」の著者というのが、インパクトあります。
-
以下のページを見るとだめなようですが、
各言語の演算子の比較
http://msdn2.microsoft.com/ja-jp/library/2hxce09y.aspx
> x != null ? x : -1;
これなら IIf(x IsNot Nothing,x,-1) って言うことになるんでしょうか?
IIf(x.HasValue(), x, -1) こっちですね。
すべての返信
-
なさげですね。
The Truth about Nullable Types and VB... http://www.panopticoncentral.net/archive/2004/06/04/1180.aspx
上のブログの記事はちょっと古いですけど、「The Visual Basic .NET Programming Language (Microsoft Net Development Series) 」の著者というのが、インパクトあります。
-
以下のページを見るとだめなようですが、
各言語の演算子の比較
http://msdn2.microsoft.com/ja-jp/library/2hxce09y.aspx
> x != null ? x : -1;
これなら IIf(x IsNot Nothing,x,-1) って言うことになるんでしょうか?
IIf(x.HasValue(), x, -1) こっちですね。 -
同じ意味ですね~。
内部でそのように展開されているということのようです。
またまた手前味噌ですが、以下にまとめてみました。
[C# 2.0]??演算子(null coalescing operator )
http://blogs.wankuma.com/ogiogi/archive/2006/06/10/30712.aspx
??演算子(null coalescing operator ) は 「Null 合体演算子」というのですね。
えムナウさんありがとうございます。>それより、「三項演算子」 の対応を先にして頂きたく。
深読みすると
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=308754&SiteID=7
ですね。
これ、早く対応していただかないと、「三項演算子」で検索できないっすね。 -
古い話ですみません、すっかり忘れてました。
というのも、
x ?? -1;
は、
x != null ? x : -1;
のように展開されるからです。
これってどういう意味ですか?
と同じような意味になる、というような意味でしょうか?何が言いたかったかというと、仕様で同じになる(そのように展開される)と決まっているのか、
単に同じような意味になる、というだけなのか、ということで、どっかに書かれてるのかな?と。何でそんな細かいこと気にするかというと、xの評価回数は1回なのか2回なのか、
てことが知りたかったのでした。
※もし評価が2回となると、マルチスレッド環境でうかつに使うと痛い目に…で試してみた感じでは、??の方はxの評価は1回のようですね。