使用未分配的变量(字符串)

时间:2011-12-04 19:44:15

标签: c# string unassigned-variable

我有一段迭代XML属性的代码:

string groupName;
do
{
    switch (/* ... */)
    {
        case "NAME":
            groupName = thisNavigator.Value;
            break;
        case "HINT":
            // use groupName

但是这样我得到了使用未分配变量的错误。如果我给groupName分配了一些东西,那么我就无法改变它,因为这就是字符串在C#中的工作方式。任何解决方法?

5 个答案:

答案 0 :(得分:7)

你是对的 strings 在.NET中是不可变的,但你假设字符串变量不能改变是错误的。

这是有效的:

string groupName = null;
groupName = "aName";
groupName = "a different Name";

如果您执行以下操作,您的代码将不会出现错误:

string groupName = string.Empty; // or null, if empty is meaningful
do
{
    switch (/* ... */)
    {
        case "NAME":
            groupName = thisNavigator.Value;
            break;
        case "HINT":
            // use groupName

答案 1 :(得分:2)

default的{​​{1}}是否为switch分配了值?如果没有,则会导致错误。

groupName

答案 2 :(得分:1)

string groupName = string.Empty;

只需指定一个空字符串,你应该是okej。

答案 3 :(得分:1)

编译器不知道你的switch语句的上下文(例如,不能保证交换机总是匹配一个案例)。

因此即使在切换之后,groupName也可能保持未分配状态。

您可以使用groupName实例化String.Empty或在切换语句中使用default:

答案 4 :(得分:1)

在每个案例中设置groupName,并在switch语句中使用默认键,或者在切换之前将groupName指定为null