【问题标题】:How to compare to "Could not evaluate expression"?如何与“无法评估表达式”进行比较?
【发布时间】:2011-04-27 16:35:18
【问题描述】:

我有一本这样的字典:

Dictionary<string, object> myDictionary = new Dictionary<string, object>();

当我从中获取数据时,我会这样做:

myDictionary["IndexingValue"]

大部分时间都在工作。但我只是将它存储的一个值更改为空。现在,当我进行相同的调用(期望为空)时,我得到了异常。当我将它放入调试器时,它会显示 “无法评估表达式”

所以我对自己说:“好吧,不知何故,我的IndexingValue 不在字典中。但我去查看了 myDictionary.entries,果然它在那里。

我想做的是这样的:

if (myDictionary["IndexingValue"] != <Could not evaluate expression>)
{
    //do some logic.
}

(IE 找到某种方法可以知道何时无法评估表达式而不必抛出异常。)

这个可以吗?

【问题讨论】:

    标签: c# .net .net-3.5 c#-3.0


    【解决方案1】:

    你可以使用

    if (myDictionary["IndexingValue"] != null)
    {
        //do some logic.
    }
    

    检查项目是否为空。至于“无法评估表达式”,它只是一个调试器输出,当它由于某种原因无法获取项目的值时,只要字典包含给定的键,在运行时就不会出现此类错误。要检查密钥是否在字典中,您可以使用ContainsKey 方法。

    【讨论】:

    • @Vaccano - 这只是调试器。看看你在运行应用程序时会得到什么。
    • 您从程序中得到的真正异常是什么,导致它的完整代码是什么? “无法评估表达式”是调试器的错误。它与您的代码错误没有直接关系。
    • 宾果游戏!我认为我的错误是从字典中检索值。不是(我在 null 结果上调用了.Length != 0!)。感谢您提供有关调试器与运行时的提示,这让我再次查看。
    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多