1

この構文はどういう意味ですか? このコードにたどり着いたとき、私は現在c#4.0をコーディングしています。

_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
             ? TempData[_dataKey] ?? new ProfileData ()) as ProfileData;

私がそれを書くとしたら、それはどうなるでしょうか?

コンパイラは、 : を書いていないというエラーを表示します。

4

2 に答える 2

4

?? null の場合は、他の値を使用することを意味します。例えば

var name = somevalue ?? "Default Name";

が null の場合somevalue、値「デフォルト名」が割り当てられます

シングルも?は三項演算子です。基本的には次のように使用します。

var example = (conditional statement here) ? value_if_true : value_if_false;

ただし、コーリーが言うように、コーリーが言うように、あなたのコードは三項演算子の正しい構文に従っていないようです。??オフ。

于 2013-02-16T23:36:18.277 に答える
2

そこを見逃したようです?。私はそれが読むことになっていたと思う:

_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
            ?? TempData[_dataKey]
            ?? new ProfileData()
        ) as ProfileData;

C# では、操作は、または必要に応じてA ?? B直接同等です。(A == null ? B : A)if (A == null) return B; return A;

したがって、上記のステートメントは次と同等です。

object tmp = SerializationHelper.Deserialize(Request.Form[_dataKey]);
if (tmp == null)
{
    tmp = TempData[_dataKey];
    if (tmp == null)
        _tmp = new ProfileData();
}
_data = tmp as ProfileData;
于 2013-02-16T23:41:08.003 に答える