2011-04-18 104 views
9

我想检测浏览器语言,以便在人们连接到我的网站时切换语言。 但是,当填充在语言的浏览器选项的用户处理不当我总是用检测浏览器语言并避免空引用异常

string browserlanguage = Request.UserLanguages[0] 

我怎么能避免错误空值“对象引用不设置到对象的实例。”

回答

9

检查Request.UserLanguages != null

例如:

var l = Request.UserLanguages; 
string browserlanguage = l ?? l[0] : "en"; 
// fall back to en, or set to "" or null. 

编辑:(重新您的评论)如果上述失败,也Request本身为空,这AFAIK是不可能的(你可以检查Request != null以确保?)。你以后在代码中可能有空引用吗?如果语句的语法是错误的,你贴什么

+0

Request.UserLanguages!= NULL工作得很好,THKū – Sjemmie 2011-04-18 11:39:27

+0

好吧,伟大的:) – mafu 2011-04-18 11:41:24

+0

刚抬起头,三元。 应该是 '''string browerlanguage = l? l [0]:“en”;''' – AjayAujla 2017-07-27 16:53:45

6
string lang = (Request.UserLanguages ?? Enumerable.Empty<string>()).FirstOrDefault();