PHPでは、これを行うことができます:
$var = if($var2 == 3) ? $var : null;
しかし、どうすればC#でそれを行うことができますか?
user_email.Content = if(dr["user_email"] == "") ? dr["user_email"] : null;
動作しません。
PHPでは、これを行うことができます:
$var = if($var2 == 3) ? $var : null;
しかし、どうすればC#でそれを行うことができますか?
user_email.Content = if(dr["user_email"] == "") ? dr["user_email"] : null;
動作しません。
user_email.Content = (dr["user_email"] != null && dr["user_email"] != "") ? dr["user_email"]: null;
?: 演算子の構文 (C#):
condition ? first_expression : second_expression;
条件演算子 (?:) は、ブール式の値に応じて 2 つの値のいずれかを返します。条件演算子の形式は次のとおりです。
私はむしろ次のように書き直します
user_email.Content = !string.IsNullOrEmpty(dr["user_email"]) ? dr["user_email"]: null;
を削除します。
user_email.Content = dr["user_email"] == "" ? dr["user_email"]: null;
警告が表示されます (場合によっては間違った結果が表示されます):
意図しない参照比較の可能性。値の比較を行うには、左側を「string」型にキャストします
だからあなたは試すことができます:
user_email.Content = dr["user_email"].ToString() == "" ? dr["user_email"]: null;
コンパイルするには、 if
:を削除するだけです。
user_email.Content = (dr["user_email"] == "") ? dr["user_email"]: null;
この演算子は、特にこの場合(違反なし!)、必ずしも読みやすいとは限りません。読みやすくするために、私は常に3行で記述します。
user_email.Content = (dr["user_email"] == "")
? dr["user_email"]
: null;
しかし、それは単なる提案です^ _ ^
三項演算子と呼ばれる
user_email.Content = dr["user_email"] == "" ? dr["user_email"] : null;
コンテンツをstring.Empty
if it isに設定し、string.Empty
そうでなければ toに設定するのnull
は少しクレイジーに思えるので、あなたが実際に何を意味しているのかは、次のようなものだと思います。
user_email.Content = dr["user_email"] == string.Empty ? null : dr["user_email"];
ただし、前の例では null 値が例外をスローするため、dr["user_email"]
実際にすでにそうである可能性がある場合は、次の方法が適しています。null
var emailValue = dr["user_email"];
user_email.Content = string.IsNullOrWhiteSpace(emailValue) ? null : emailValue;
変数を使用すると、アクセサーを 2 回emailValue
使用することを回避できます。dr