C# 当前上下文中不存在该名称-grrr

C# 当前上下文中不存在该名称-grrr,c#,string,scope,runtime-error,C#,String,Scope,Runtime Error,在下面的代码中,无论我如何尝试,当我放置断点时,名称strSide“在当前上下文中不存在”,如图所示。我希望strSide包含rawId中的最后一个字符,然后去掉该字符,以便rawId的值将转换为整数。我没有得到编译器错误,但是得到了运行时错误 当rawId的值为8429R时,剥离工作正常,但我无法获得分配给strSide的R foreach (string fieldName in Request.QueryString) { r

在下面的代码中,无论我如何尝试,当我放置断点时,名称strSide
“在当前上下文中不存在”
,如图所示。我希望
strSide
包含
rawId
中的最后一个字符,然后去掉该字符,以便
rawId
的值将转换为整数。我没有得到编译器错误,但是得到了运行时错误

rawId
的值为
8429R
时,剥离工作正常,但我无法获得分配给strSide的
R

        foreach (string fieldName in Request.QueryString)
        {
                rawId = fieldName;
                String strSide = Convert.ToString(rawId[rawId.Length - 1]); <-- name does not exist
                if (!IsNumeric(rawId)) <--break point set here.
                {
                    rawId = StripRightChar(rawId);  
                }
                Qty = Request.QueryString[fieldName];
            int productId = 0;
            if (fieldName == "txtReference")
            {
                strComments = Request.QueryString[fieldName];
            }
foreach(Request.QueryString中的字符串字段名)
{
rawId=字段名;

String strSide=Convert.ToString(rawId[rawId.Length-1]);该变量可能已被“优化掉”?创建后不会在任何地方使用它。有关详细信息,请参阅:。

是否需要存储在strSide中的值

如果没有,你可以试试

更新,因为您需要该值,请尝试以下操作:

var s = "8429L";
var numbers = s.Substring(0, s.IndexOfAny("RLB".ToCharArray()));
var letter = s.Substring(numbers.Length);

是的,我需要这个值。它可以是“R”(右)、“L”(左)或“B”(两者)。我需要将数字部分作为产品ID传递,将字符部分作为需要该部分哪一侧的指示符传递。以下是我尝试过的提取字符//字符串strSide=Convert.ToString(rawId[rawId.Length-1])的方法;//Char strSide=rawId[rawId.Length-1];//String strSide=rawId.Substring(rawId.Length-1,1);Char strSide=Convert.ToChar(rawId.Substring(rawId.Length-1,1));在我的回答中添加了另一个建议,而不是对您的原始问题的回答,即为什么您不能调试。您不能将鼠标悬停在
rawId
上,查看该字符串中的最后一个字符吗?或者在
rawId
上添加watch。您的语句
string strSide=Convert.ToString(rawId[rawId.Length-1]);
什么都不做。你为什么有它?PS!另一种获取最后一个字符作为长度为1的字符串的方法是
strSide=rawId.Substring(rawId.length-1);