使用未分配的局部变量

时间:2015-10-27 22:53:52

标签: c# variables char local

在我的代码中,我收到以下错误:

  

使用未分配的局部变量'nonrpeatedChar'

为什么会出现此错误,如何解决?

static void firstNonRepeated(string str)
{
        int i, j, len;
        len = str.Length;

        int count = 1;
        char nonrpeatedChar;
        for (i = 0; i < len; i++)
        {
            for (j = 0; j < len; j++)
            {
                if (i != j && str[i] == str[j])
                {
                    count = count + 1;
                }
            }
            if (count == 1)
            {
                nonrpeatedChar = str[i];
                break;
            }
        }
        Console.WriteLine(nonrpeatedChar);
        Console.ReadLine();
    }           
}

3 个答案:

答案 0 :(得分:4)

鉴于您的代码路径,在将nonrepeatedChar传递给Console.WriteLine之前无法保证if已被分配,因为唯一的分配发生在char nonrepeatedChar = default(char); 块内部,可能是也可能不是击中。

一个简单的解决方法是在声明时指定默认值:

<?php

namespace AppBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class CheckListType extends AbstractType{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('IMEI');
        $builder->add('serialNumber');
        $builder->add('visualCheck');
        $builder->add('callCheck');
        $builder->add('cameraCheck');
        $builder->add('checkMend');
        $builder->add('wifiCheck');
        $builder->add('wipeDataCheck');
        $builder->add('checkComment');
        $builder->add('checkDate');
        $builder->add('batch');
    }

    /**
     * Returns the name of this type.
     *
     * @return string The name of this type
     */
    public function getName()
    {
        return 'check_list';
    }
}

答案 1 :(得分:0)

尝试:

char nonrpeatedChar = new Char();

答案 2 :(得分:0)

如果it('test', function() { return hack().then(function(bool) { assert(false); }); }); 的len为str,则0的值未定义。因此nonrpeatedChar不起作用。