0

这是文本文件

country1: 93#country2: 355#country3: 213#country4: 376#country5: 244#country6: 54#country7: 374#

对于这个 ASP.NET Web 服务,当我在“for”循环之外声明字符串临时,错误“使用未分配的局部变量 'temp'”

  [webMethod]
    public string[] getContryCode ()

        {
            string temp;

            string[] data = File.ReadAllLines(@"countryCode.txt");

            string[] country = data[0].Split('#');

            for (int i = 0; i < country.Length; i++ )
            {
                temp = country[i];

            }
                //const string f = "countryCode.txt";

            return temp.Split(':');


        }

如果我在循环中声明字符串 temp,则无法返回“temp.Split(':')”的值。需要想办法解决

原始文件格式:#country1:code1#country2:code2# 数组列表“国家”:[0] country1 code1 country2 code2-我可以得到这项工作 b split temp.split(':') :应该得到这样的东西[0]country1 [1] code1 [2] country2 [3] code2

4

1 回答 1

5

您的 for 循环不能保证迭代一次,因此您会收到一个编译器错误,即当您尝试使用它时 temp 可能没有值。

尝试:

string temp = "";

不过,更好的是添加适当的测试以确保您的所有输入都符合预期:

if ( !System.IO.File.Exists( @"countryCode.txt" ) )
    throw new ApplicationException( "countryCode.txt is missing" );

string[] data = File.ReadAllLines(@"countryCode.txt");

if ( data.Length == 0 )
    throw new ApplicationException( "countryCode.txt contains no data" );

if ( data[0].Length == 0 )
    throw new ApplicationException( "malformed data in countryCode.txt" );

string[] country = data[0].Split('#');

string temp = "";
for (int i = 0; i < country.Length; i++ )
{
    temp = country[i];
}

return temp.Split(':');

不过,我不确定您要使用 for 循环来完成什么,因为您只会返回国家/地区数组中的最后一项,这与以下内容相同:return country[country.Length - 1];

编辑:

您可能希望删除country数组中的空条目。您可以只使用RemoveEmptyEntries选项:

string[] country = data[0].Split('#', StringSplitOptions.RemoveEmptyEntries);

/* Using the RemoveEmptyEntries option can cause the function to
   return a 0-length array, so need to check for that afterall: */
if ( country.Length == 0 )
    throw new ApplicationException( "malformed data in countryCode.txt" );
于 2013-08-30T14:26:39.417 回答