C# C语言中的字符串相等问题#

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

我在C#方法(返回JSON对象)中有下面的if-else语句。 即使if语句(language==“en”)的条件为true,else语句也会执行。 为什么会这样?该方法由另一个文件中的以下代码行调用:

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"