0

我有以下财产:

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'.

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

在调试器中 data.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

4 回答 4

3

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

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

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

如果是 UrlParameter,则

String value = (data.Values["culture"] ?? defaultCulture).ToString();
于 2013-10-14T17:51:09.840 回答
1

如果你想得到string它是否确实是一个字符串和一个默认值,你可以使用来测试估值器的类型as。就像是:

(data.Values["culture"] as string) ?? defaultCulture
于 2013-10-14T18:11:37.040 回答
0

尝试这个:

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

这个想法是在尝试强制转换之前检查 null 。

于 2013-10-14T17:51:41.343 回答
0

你用过这个吗?

string.IsNullOrWhiteSpace(somestring)
于 2013-10-14T17:59:08.767 回答