C# C语言中的字符串相等问题#
我在C#方法(返回JSON对象)中有下面的if-else语句。 即使if语句(language==“en”)的条件为true,else语句也会执行。 为什么会这样?该方法由另一个文件中的以下代码行调用:C# C语言中的字符串相等问题#,c#,string,string-comparison,C#,String,String Comparison,我在C#方法(返回JSON对象)中有下面的if-else语句。 即使if语句(language==“en”)的条件为true,else语句也会执行。 为什么会这样?该方法由另一个文件中的以下代码行调用: Ux.locale.Manager.setConfig({ ajaxConfig : { method : 'GET' }, language : 'en', tpl : 'getLocal
Ux.locale.Manager.setConfig({
ajaxConfig : {
method : 'GET'
},
language : 'en',
tpl : 'getLocale.castle?language={locale}',
type : 'ajax'
});
language
值与tpl
值相结合,生成调用该方法的URL(在我的示例中:getLocale.castle?language=en
)
我尝试过使用if(language.Equals(“en”))
,但即使这样,else语句也会执行,而不是if语句
即使if语句(language==“en”)的条件为true,else语句也会执行。为什么会这样
最可能的原因是什么<代码>语言不等于“en”。确保变量中没有任何额外的空格(常见的陷阱,有时在检查调试器时肉眼看不到),并检查大小写是否正确
例如,试试看
language.Trim().ToLower() == "en"
问题是变量
language
使用了两次(一次在language:'en'
行的language
属性中,第二次在tpl:'getLocale.castle?language={locale}行中)“
。将语言
参数传递给getLocale方法时,这会导致混淆(未传递正确的语言
参数)。当我更改language
参数的名称时,问题得到了解决,if语句被执行。您确定c#code中language
的值是“en”
?并且language
保证是“en”吗
?我的意思是,你仔细检查了这个?你100%确定这是将参数传递给方法的正确方法吗?你能在方法内部设置一个断点来验证它是否为空吗?我建议在GetLocale方法控制台中添加详细的日志记录。WriteLine(语言=“en”);
language.Trim().ToLower() == "en"