这些天我遇到了many strange scenarios :-)方法调用不会抛出异常
我已经测试在ASP.Net应用程序下面的两个代码。代码1抛出异常(如预期的那样),而当字符串值为空时,代码2不会抛出异常(与期望相反)。
- 为什么“EVAL”在这种情况下不引发异常?
- EVAL的工作是否总是这样(即“没有例外”)还是仅仅是运气?
- 是否有任何说'Eval'返回空字符串的MSDN参考?
// 代码1:导致异常
string test = Convert.ToString(subscriber.EncryptedSSN).Substring(0, Convert.ToString(subscriber.EncryptedSSN).Length >= 5 ? 5 : Convert.ToString(subscriber.EncryptedSSN).Length);
// 代码2:不抛出异常
<%# Convert.ToString(Eval("EncryptedSSN")).Substring(0, Convert.ToString(Eval("EncryptedSSN")).Length >= 5 ? 5 : Convert.ToString(Eval("EncryptedSSN")).Length) %>
参考:
- Eval check for DBNull doesnt work
- Convert.ToString behaves differently for "NULL object" and "NULL string"
- Datatype returned varies based on data in table
如果你能想出一个*较短的例子 - 理想情况下在一个独立的控制台应用程序,它真的会有所帮助。我不知道什么'Eval'甚至* *在这里... –
@JonSkeet我已经添加了ASP.Net标记并更新了问题 – Lijo
我强烈地认为Eval返回'string.Empty'而不是'null'。 –