-4

PHPでは、これを行うことができます:

$var = if($var2 == 3) ? $var : null;

しかし、どうすればC#でそれを行うことができますか?

user_email.Content = if(dr["user_email"] == "") ? dr["user_email"] : null;

動作しません。

4

5 に答える 5

5
user_email.Content = (dr["user_email"] != null && dr["user_email"] != "") ? dr["user_email"]: null;

?: 演算子の構文 (C#):

condition ? first_expression : second_expression;

条件演算子 (?:) は、ブール式の値に応じて 2 つの値のいずれかを返します。条件演算子の形式は次のとおりです。

于 2012-07-12T12:18:45.897 に答える
4

私はむしろ次のように書き直します

user_email.Content = !string.IsNullOrEmpty(dr["user_email"]) ? dr["user_email"]: null;
于 2012-07-12T12:21:44.033 に答える
1

を削除します。

user_email.Content =  dr["user_email"] == "" ? dr["user_email"]: null;

警告が表示されます (場合によっては間違った結果が表示されます):

意図しない参照比較の可能性。値の比較を行うには、左側を「string」型にキャストします

だからあなたは試すことができます:

user_email.Content =  dr["user_email"].ToString() == "" ? dr["user_email"]: null;
于 2012-07-12T12:18:36.000 に答える
0

コンパイルするには、 if:を削除するだけです。

user_email.Content = (dr["user_email"] == "") ? dr["user_email"]: null;

この演算子は、特にこの場合(違反なし!)、必ずしも読みやすいとは限りません。読みやすくするために、私は常に3行で記述します。

user_email.Content = (dr["user_email"] == "") 
    ? dr["user_email"]
    : null;

しかし、それは単なる提案です^ _ ^

于 2012-08-03T08:50:52.327 に答える
0

三項演算子と呼ばれる

 user_email.Content = dr["user_email"] == "" ? dr["user_email"] : null;

コンテンツをstring.Emptyif 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

于 2012-07-12T12:20:12.043 に答える