2

If-Then-Else statement最初はを使ってを書こうとしましたternary operator
好奇心から、 a を使用して同じコードを書くことにしました
null-coalescing operatorが、期待どおりに動作しません。

public System.Web.Mvc.ActionResult MyAction(int? Id)
{
    string MyContetnt = string.Empty;

    //This line of code works perfectly
    //MyContent = Id.HasValue ? Id.Value.ToString() : "Id has no value";

    //This line of code dosent show "Id has no value" at all 
    MyContetnt = (System.Convert.ToString(Id) ?? "Id has no value").ToString();

    return Content(MyContetnt);
}

Mysite/Home/MyAction/8777というルートでプログラムを実行すると、すべてが完璧で、入力したId番号が表示されます。

Idしかし、ルートMySite/Home/MyActionを介さずにプログラムを実行すると、 何も起こらずMyContetnt空になりますが、画面に「 Id has no value 」と表示されるはずです。

何か不足していますか?

編集: ?? を使用してコードを書くことは可能ですか? ( null 合体演算子 )?

4

2 に答える 2

6

Convert.ToString()変換が失敗した場合、空の文字列になります。したがって、null 合体演算子は null ではなく空の文字列を検出します。

以下を使用する必要があります。

MyContetnt = Id.HasValue ? System.Convert.ToString(Id.Value) : "Id has no value";
于 2014-05-27T08:55:37.363 に答える
2

Convert.ToString()を操作するint?と、数値文字列 (int?に値がある場合) または空の文字列 (そうでない場合) が生成されます。

したがって、それは を生産しておらず、 を生産しており、 をnull生産しています。"""" ?? x == ""

于 2014-05-27T08:56:26.943 に答える