如何在不更改其他变量的情况下插入编号

时间:2013-12-27 13:16:19

标签: c#

到目前为止我制作了这段代码,但它没有编号:

int add = files.Length;
DirectoryInfo di = new DirectoryInfo("c:\\Windows");

FileInfo[] fiArr = di.GetFiles();

Console.WriteLine("The directory {0} contains the following files:", di.Name);
Console.WriteLine();
foreach (FileInfo f in fiArr) {
    Console.WriteLine(" {0} ({1}) ", f.Name, f.Length);
}
Console.WriteLine();
Console.ReadLine();

PressEnter();
Console.Clear();

我希望输出如下:

文件:

C:\Windows
1. explorer.exe (2871808)
2. ODBC.ini (376)
3. winhlp32.exe (9728)
...

4 个答案:

答案 0 :(得分:2)

int i = 1;
foreach (FileInfo f in fiArr)
{
   Console.WriteLine("{0}. {1} ({2}) ",i , f.Name, f.Length);
   i++;
}

答案 1 :(得分:1)

添加计数变量。您可能希望将其命名为i,因为这是它的通用名称。在循环外初始化它。在您的情况下,使用1初始化它将是最有意义的。

然后,在循环中,在WriteLine()调用中,将新占位符添加到格式字符串的开头,并将count变量作为格式字符串后面的第一个参数插入。调用后,使用++运算符递增变量。

您也可以使用0外部初始化它,并在每个循环开始时递增它。无论你喜欢什么。

答案 2 :(得分:1)

使用LINQ

DirectoryInfo di = new DirectoryInfo(@"c:\Windows");

FileInfo[] fiArr = di.GetFiles();

Console.WriteLine("The directory {0} contains the following files: {1}"
        , di.Name
        , String.Join(
            " ", 
            fiArr.Select(
                (x, index) => String.Format(
                                "{0}. {1} ({2})"
                                , index+1
                                , x.Name
                                , x.Length
                            )
           )
        ) 
    );

Console.ReadKey();
Console.Clear();

答案 3 :(得分:0)

使用for循环代替foreach

for (int i = 0; i < fiArr.Length; i++)
{
    Console.WriteLine(i + 1 + ". " + fiArr[i].Name + " (" + ffiArr[i].Length + ")");
    // ...