Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么以下条件运算符在包含可空类型的StringBuilder中工作异常?在C#中? StringBuilder htmlResp=new StringBuilder(); 智力?cuID=1; 字符串cuName=“Tom”; 字符串cuEmpID=“ZXCV”; htmlResp.Append(“+cuName+”(“+cuEmpID==”?“-”:cuEmpID+”+”); html.Resp.ToString();_C#_.net_Nullable_Stringbuilder_Conditional Operator - Fatal编程技术网

为什么以下条件运算符在包含可空类型的StringBuilder中工作异常?在C#中? StringBuilder htmlResp=new StringBuilder(); 智力?cuID=1; 字符串cuName=“Tom”; 字符串cuEmpID=“ZXCV”; htmlResp.Append(“+cuName+”(“+cuEmpID==”?“-”:cuEmpID+”+”); html.Resp.ToString();

为什么以下条件运算符在包含可空类型的StringBuilder中工作异常?在C#中? StringBuilder htmlResp=new StringBuilder(); 智力?cuID=1; 字符串cuName=“Tom”; 字符串cuEmpID=“ZXCV”; htmlResp.Append(“+cuName+”(“+cuEmpID==”?“-”:cuEmpID+”+”); html.Resp.ToString();,c#,.net,nullable,stringbuilder,conditional-operator,C#,.net,Nullable,Stringbuilder,Conditional Operator,我不明白为什么上面的代码(根据实际代码修改)总是给我奇怪的结果:“ZXCV”而不是“Tom(ZXCV)” 有人知道背后的原因吗?如果可能,可以提供引用吗?您的条件表达式缺少一些括号 请尝试以下方法: StringBuilder htmlResp=new StringBuilder(); int? cuID= 1; string cuName="Tom"; string cuEmpID="ZXCV"; htmlResp .Append( "<option value=\"" + cuID.

我不明白为什么上面的代码(根据实际代码修改)总是给我奇怪的结果:“ZXCV”而不是“Tom(ZXCV)”


有人知道背后的原因吗?如果可能,可以提供引用吗?

您的条件表达式缺少一些括号

请尝试以下方法:

StringBuilder htmlResp=new StringBuilder();
int? cuID= 1;
string cuName="Tom";
string cuEmpID="ZXCV";

htmlResp .Append( "<option value=\"" + cuID.Value + "\">" + cuName+" ("+cuEmpID==""? "-":cuEmpID+")"+  "</option>");
html.Resp.ToString();
“不要让表达式太复杂”的一个很好的例子

“”+cuName
+“(“+cuEmpID==”?“-”:cuEmpID+”)”+”;
汇编为

 "<option value=\"" + cuID.Value + "\">" + cuName 
        + " ("+cuEmpID==""? "-":cuEmpID+")"+  "</option>");
(“+cuName+”(“+cuEmpID)=”
? "-"
:cuEmpID+“”“+”);
一个简单的“修复”是

 ("<option value=\"" + cuID.Value + "\">" + cuName+" ("+cuEmpID ) == "" 
      ? "-"
      : cuEmpID+")"+  "</option>");
“+cuName+”(“
+((cuEmpID==”)?“-”:cuEmpID)
+ ")" + ""

但是为了可读性,使用一些中间变量<代码>?:不应嵌套在其他表达式中

你能给出一个期望的html和从中得到的实际html的例子吗?它也不是可为null的元素。@TomRiley我期望的是'TOM(ZXCV'),但它给了我'ZXCV'instead@HenkHolterman我的错。我已将标题更改为可空类型
string normalisedEmpID = cuEmpID == "" ? "-" : cuEmpID;

string text = string.Format
(
    "<option value=\"{0}\">{1} ({2})</option>",
    cuID.Value,
    cuName,
    normalisedEmpID
);
 "<option value=\"" + cuID.Value + "\">" + cuName 
        + " ("+cuEmpID==""? "-":cuEmpID+")"+  "</option>");
 ("<option value=\"" + cuID.Value + "\">" + cuName+" ("+cuEmpID ) == "" 
      ? "-"
      : cuEmpID+")"+  "</option>");
 "<option value=\"" + cuID.Value + "\">" + cuName + " (" 
       + ((cuEmpID == "") ? "-" : cuEmpID ) 
       + ")" + "</option>"