ToUpper()方法不起作用

我从服务器传递一条消息,该服务器存储在一个名为strObject的字符串变量中。 我希望将strObject中的字符串转换为大写。 所以,我使用ToUpper()方法。 但是,当我添加一个断点并通过该行时,我的字符串不会转换为大写。 strObject变量将始终包含文本Task_status。 我希望将其转换为TASK_STATUS。 我错过了什么吗? 在下面发布我的相关代码: –

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()以大写forms返回一个string

使用以下…

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

System.String是不可变的,因此您必须重新分配,如:

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

所有操纵字符串的方法,保持原始字符串不变,并返回包含所需内容的字符串。 您必须获取该返回值并将其分配给某些内容。

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

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

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

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

此外,如代码中所示, switch没有做太多工作,您可以将其删除,除非这不是整个代码。

 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); } } } 

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

字符串是不可变的,你需要记住当你使用它们时。

您的方法将值插入到您调用各种工作方法的strObject和strValue变量,但这些工作方法不会更改已创建的不可变字符串变量。

虽然原始变量是不可变的,但您仍然可以设置新的变量(即使具有相同的名称)等于原始变量加上worker方法的结果。

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

strObject.ToUpper().Trim();

strValue.ToUpper().Trim();

strObject = strObject.ToUpper().Trim()

strValue = strvalue.ToUpper().Trim()

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