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