检查对象是否有东西

时间:2013-10-14 17:48:46

标签: c#

我有以下属性:

IDictionary<string, object> Values { get; }

该属性有一些值,其中一个是关键的“文化”。

我尝试使用该值并转换为字符串:

String value = (String)data.Values["culture"] ?? defaultCulture;

当项目有一些值时会起作用,但是当它没有时,我会收到错误:

Unable to cast object of type 'System.Web.Mvc.UrlParameter' to type 'System.String'.

BTW,System.Web.Mvc.UrlParameter: http://msdn.microsoft.com/en-us/library/system.web.mvc.urlparameter%28v=vs.108%29.aspx

在调试器数据中.Values [“culture”]的值为{} 。我测试过:

var test_1 = data.Values["culture"] == null; // returns false

var test_2 = data.Values["culture"].ToString() == null; // returns false

如何检查data.Values [“culture”]是否包含某些内容?

4 个答案:

答案 0 :(得分:3)

显然,您在该词典条目中存储UrlParameter。如果您想要输出字符串,则需要使用ToString()

要使用的确切表达式取决于defaultCulture的类型。如果是字符串,那么

String value = data.Values["culture"] == null ? defaultCulture : data.Values["culture"].ToString();

如果是UrlParameter,那么

String value = (data.Values["culture"] ?? defaultCulture).ToString();

答案 1 :(得分:1)

如果你想获得string,如果它确实是一个字符串,否则你可以使用as来测试评估者的类型。类似的东西:

(data.Values["culture"] as string) ?? defaultCulture

答案 2 :(得分:0)

试试这个:

String value = (String) (data.Values["culture"] ?? defaultCulture);

我的想法是在尝试施放之前检查null。

答案 3 :(得分:0)

你使用过这个吗?

string.IsNullOrWhiteSpace(somestring)