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语句。

c#中的字符串相等问题

即使if语句的条件(language == "en")为真,else语句也会执行。为什么会这样?

最可能的原因?language 等于"en"确保变量中没有任何额外的空白(这是一个常见的陷阱,在检查调试器时,有时人眼可能看不出来),并检查大小写是否正确。

例如,输入

language.Trim().ToLower() == "en"

问题是变量language被使用了两次(一次在language : 'en'行的language属性中,第二次在tpl: 'getLocale.castle?language={locale}'行中。当将language参数传递给getLocale方法时(没有传递正确的language参数),这会导致混乱。当我更改language参数的名称时,问题就解决了,并且执行了if语句。