C# ToUpper()方法不工作

C# ToUpper()方法不工作,c#,.net,C#,.net,我正在从服务器传递一条消息,该消息被存储到名为strObject的字符串变量中。我希望将strObject中的字符串转换为大写。所以,我使用ToUpper()方法。但是,当我添加一个断点并遍历该行时,我的字符串并没有转换成大写。strObject变量将始终包含文本任务状态。我希望将其转换为任务状态。我遗漏了什么吗?在下面张贴我的相关代码:- public void VerifyValue(String strObject, String strValue, int row) {

我正在从服务器传递一条消息,该消息被存储到名为strObject的字符串变量中。我希望将strObject中的字符串转换为大写。所以,我使用ToUpper()方法。但是,当我添加一个断点并遍历该行时,我的字符串并没有转换成大写。strObject变量将始终包含文本任务状态。我希望将其转换为任务状态。我遗漏了什么吗?在下面张贴我的相关代码:-

public void VerifyValue(String strObject, String strValue, int row)
        {               
            strObject.ToUpper().Trim();
            strValue.ToUpper().Trim();
            switch (strObject)
            {
                case "TASK_STATUS":
                    if (m_taskStatus.taskStatus.ToString() == strValue)
                    {
                        ExcelRecorder(null, row);
                    }
                    else
                    {
                        ExcelRecorder("The value [" + m_taskStatus.taskStatus.ToString() + "] does not match with the given value.", row);
                    }
            }
        }
strObject.ToUpper()
返回一个大写的
字符串

使用以下命令

strObject = strObject.ToUpper().Trim();

string.ToUpper()
返回一个值,使用它。

a
System.string
是不可变的,因此必须重新赋值,如:

strObject = strObject.ToUpper().Trim(); 

所有操作字符串的方法,保持原始字符串不变,并返回一个包含所需内容的字符串。您必须提取返回值并将其分配给某个对象。

这不起作用,因为字符串是不可变的,您必须将该值分配回
strObject

strObject = strObject.ToUpper().Trim();
另外,如代码所示,
开关没有做什么,您可以删除它,除非这不是整个代码

public void VerifyValue(String strObject, String strValue, int row)
{               
     //strObject.ToUpper().Trim();
     //strValue.ToUpper().Trim();
     if(strObject.ToUpper() ==  "TASK_STATUS")
     {
          if (m_taskStatus.taskStatus.ToString() == strValue.ToUpper())
          {
              ExcelRecorder(null, row);
          }
          else
          {
               ExcelRecorder("The value [" + m_taskStatus.taskStatus.ToString() + "] does not match with the given value.", row);
           }
       }
}

字符串是不可变的,因此对字符串调用函数实际上不会更改字符串。相反,它们返回字符串的修改副本

这意味着您必须存储函数的返回值,例如在原始变量中。

字符串是不可变的,在使用它们时需要记住这一点。 您的方法将值插入到您调用各种辅助方法的strObject和strValue变量中,但这些辅助方法不会更改已创建的不可变字符串变量

尽管原始变量是不可变的,但仍然可以将新变量(即使具有相同的名称)设置为原始变量加上辅助方法的结果

所以你真正需要做的就是改变

strObject.ToUpper().Trim()

strValue.ToUpper().Trim()

strObject=strObject.ToUpper().Trim()

strValue=strValue.ToUpper().Trim()


此答案与我的答案几乎是重复的,但我认为两者都是正确的。

.NET字符串是不可变的。耶耶耶…我的答案接受按钮仅在6分钟后有效。我正在等待仅接受您的答案