c#中的字符串相等问题
本文关键字:等问题 字符串 | 更新日期: 2023-09-27 17:50:35
我在c#方法中有以下if-else语句(返回JSON对象)。即使if语句的条件(language == "en")为真,else语句也会执行。为什么会这样?该方法由另一个文件中的以下代码行调用:
Ux.locale.Manager.setConfig({
ajaxConfig : {
method : 'GET'
},
language : 'en',
tpl : 'getLocale.castle?language={locale}',
type : 'ajax'
});
将language
值与tpl
值组合以生成调用该方法的URL(在我的示例中为:getLocale.castle?language=en
)。
[return: JSONReturnBinder]
public Locale GetLocale(string language)
{
if (language == "en")
{
Locale englishLang = new Locale();
englishLang.region.center.title = "Center Region";
englishLang.region.east.title = "East Region - Form";
englishLang.buttons.save = "Save";
englishLang.fields.labels.firstName = "First Name";
englishLang.fields.labels.lastName = "Last Name";
englishLang.fields.labels.chooseLocale = "Choose Your Locale";
return englishLang;
} else {
Locale frenchLang = new Locale();
frenchLang.region.center.title = "Region Centre";
frenchLang.region.east.title = "Region Est - Formulaire";
frenchLang.buttons.save = "Enregistrer";
frenchLang.fields.labels.firstName = "Prenom";
frenchLang.fields.labels.lastName = "Nom";
frenchLang.fields.labels.chooseLocale = "Choisissez vos paramètres régionaux";
return frenchLang;
}
}
我已经尝试使用if (language.Equals("en"))
,但即使这样,else语句执行,而不是if语句。
即使if语句的条件(language == "en")为真,else语句也会执行。为什么会这样?
最可能的原因?language
不等于"en"确保变量中没有任何额外的空白(这是一个常见的陷阱,在检查调试器时,有时人眼可能看不出来),并检查大小写是否正确。
例如,输入
language.Trim().ToLower() == "en"
问题是变量language
被使用了两次(一次在language : 'en'
行的language
属性中,第二次在tpl: 'getLocale.castle?language={locale}'
行中。当将language
参数传递给getLocale方法时(没有传递正确的language
参数),这会导致混乱。当我更改language
参数的名称时,问题就解决了,并且执行了if语句。