我有以下属性:
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”]是否包含某些内容?
答案 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)