在 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;
条件运算符 (?:) 根据布尔表达式的值返回两个值之一。条件运算符的形式为
我宁愿用以下方式重写它
user_email.Content = !string.IsNullOrEmpty(dr["user_email"]) ? dr["user_email"]: null;
删除如果
user_email.Content = dr["user_email"] == "" ? dr["user_email"]: null;
你会得到一个警告(可能是错误的结果):
可能的意外参考比较;要进行值比较,请将左侧转换为“字符串”
所以你可以尝试:
user_email.Content = dr["user_email"].ToString() == "" ? dr["user_email"]: null;
要使其编译只需删除 if
:
user_email.Content = (dr["user_email"] == "") ? dr["user_email"]: null;
我想说这个运算符并不总是易于阅读,尤其是在这种情况下(没有冒犯!)。为了使其更具可读性,我总是将其写成三行:
user_email.Content = (dr["user_email"] == "")
? dr["user_email"]
: null;
但这只是一个建议^_^
它被称为三元运算符
user_email.Content = dr["user_email"] == "" ? dr["user_email"] : null;
由于将内容设置为string.Empty
if it isstring.Empty
和 else tonull
似乎有点疯狂,我怀疑你的实际意思是这样的。
user_email.Content = dr["user_email"] == string.Empty ? null : dr["user_email"];
但是,如果dr["user_email"]
实际上已经是,null
那么您最好使用以下内容,因为在前面的示例中,空值会引发异常。
var emailValue = dr["user_email"];
user_email.Content = string.IsNullOrWhiteSpace(emailValue) ? null : emailValue;
使用emailValue
变量可以避免使用dr
访问器两次。