当前上下文中不存在名称

时间:2014-02-07 09:11:06

标签: c#

我是C#编码的新手。我正在创建一个用于C#学习和娱乐的Asp + C#网站。我遇到了一个奇怪的错误。

我在做什么。 从文本框获取用户名,将名称转换为char arrary,然后根据switch语句中描述的值尝试加入添加数组。

但是,它在我的所有switch语句中显示红色波浪线,显示我,当前上下文中不存在名称。

任何线索,如何解决?

name = TextBoxName.Text.ToString();
var number = 0;
char[] arr = name.ToCharArray();
foreach (var nameChar in arr)
{
    switch (nameChar)
    {
        case A:
            number += 1;
        case B:
            number += 2;
        case C:
            number += 3;
        case D:
            number += 4;
        case E:
            number += 5;
        case F:
            number += 5;
        case G:
            number += 7;
        case H:
            number += 8;
        case I:
            number += 9;
        case J:
            number += 10;
        case K:
            number += 11;
        case L:
            number += 12;
        case M:
            number += 13;
        case N:
            number += 14;
        case O:
            number += 15;
        case P:
            number += 16;
        case Q:
            number += 17;
        case R:
            number += 18;
        case S:
            number += 19;
        case T:
            number += 20;
        case U:
            number += 21;
        case V:
            number += 22;
        case W:
            number += 23;
        case X:
            number += 24;
        case Y:
            number += 25;
        case Z:
            number += 26;
        default:
    }
};

7 个答案:

答案 0 :(得分:4)

其他人已指出您的错误,但请不要使用这样的代码。尝试这样的事情:

const string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char[] arr = name.ToUpper().ToCharArray();
foreach (var nameChar in arr)
{
    number += letters.IndexOf(nameChar) + 1;
};

答案 1 :(得分:3)

对于Switch,您可以在此处查看msnd:switch (C# Reference)

你需要这样做,我的意思是说你错过了这里的引用

  case 'A':

你也错过了破坏声明,所以它就像

     case 'A':
        number += 1;
        break;
    case 'B':
        number += 2;
        break;

答案 2 :(得分:3)

要在C#中使用字符,您需要使用撇号。并且为了将彼此之间的不同情况分开,您需要在每个案例结束时“休息”:

case 'A':
     number += 1;
     break;

答案 3 :(得分:0)

如果您使用字符串"A"

       case "A":
            number += 1;
         break;

或只是

           case 'A':
                number += 1;
             break;

答案 4 :(得分:0)

谢谢大家,感谢您提出的宝贵意见和建议。

它已经解决,问题是。

  • 缺少break;

  • 需要在A:''

  • 中添加'A'
  • 在foreach循环中我提到了var nameChar,我已经改变了它 到char namechar

  • 并需要在.ToUpper

  • 中添加textbox.Text

当我们学习新东西时,会发生错误:)并感谢你们纠正错误。

答案 5 :(得分:-2)

您提供的潜在变量名称不是字符,因为值是预期的,所以tr'A'而不是A等

答案 6 :(得分:-2)

你应该使用'A'而不是A