-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;

条件运算符 (?:) 根据布尔表达式的值返回两个值之一。条件运算符的形式为

于 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;

你会得到一个警告(可能是错误的结果):

可能的意外参考比较;要进行值比较,请将左侧转换为“字符串”

所以你可以尝试:

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;

我想说这个运算符并不总是易于阅读,尤其是在这种情况下(没有冒犯!)。为了使其更具可读性,我总是将其写成三行:

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 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访问器两次。

于 2012-07-12T12:20:12.043 回答