【发布时间】:2012-11-22 13:40:42
【问题描述】:
这些天我遇到many strange scenarios :-)
我在 ASP.Net 应用程序中测试了以下两个代码。当字符串值为空时,代码 1 抛出异常(如预期)而代码 2 不抛出异常(与预期相反)。
- 为什么“EVAL”在这种情况下不抛出异常?
- EVAL 会一直这样工作(即“没有例外”)还是只是运气?
- 是否有任何 MSDN 参考表明“Eval”返回空字符串?
//代码 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) %>
参考文献:
【问题讨论】:
-
如果你能想出一个 shorter 的例子,那真的很有帮助——最好是在一个独立的控制台应用程序中。我不知道
Eval是什么,甚至 是 这里... -
@JonSkeet 我添加了 ASP.Net 标签并更新了问题
-
我强烈假设 Eval 返回
string.Empty而不是null。