C# 能够根据数组大小更改文件名

C# 能够根据数组大小更改文件名,c#,arrays,filestream,C#,Arrays,Filestream,似乎如果不关闭文件流,它将根据程序中的数组数量/大小自动关闭 在下面的代码中,我设置了一些数组。根据阵列4的大小,确定我是否能够在Windows资源管理器中手动重命名该文件(如果您在调试器位于标有//断点的行时执行此操作,则此处) 如果array4很大,为什么我可以(在Windows资源管理器中手动)更改文件名,但如果我将其设置为较小的大小,则无法更改文件名 class Program { static void Main(string[] args) { Cre

似乎如果不关闭
文件流
,它将根据程序中的数组数量/大小自动关闭

在下面的代码中,我设置了一些数组。根据
阵列4
的大小,确定我是否能够在Windows资源管理器中手动重命名该文件(如果您在调试器位于标有
//断点的行时执行此操作,则此处

如果
array4
很大,为什么我可以(在Windows资源管理器中手动)更改文件名,但如果我将其设置为较小的大小,则无法更改文件名

class Program
{
    static void Main(string[] args)
    {
        CreateFileStream();

        byte[] array1 = new byte[1191980];

        byte[] array2 = new byte[1191936];

        byte[] array3 = new byte[1191936];

        byte[] array4 = new byte[85138];   //Larger size - Can change file name
        //byte[] array4 = new byte[79462]; //Smaller size - Cannot change file name

    }//Breakpoint here, try and change the file name C:\FileName.wav to something else

    private static void CreateFileStream()
    {
        FileStream fileStream = new FileStream(@"C:\FileName.wav", FileMode.Open, FileAccess.Read, FileShare.Read);
    }
}

通过分配一个大数组,您将迫使GC介入。这将清除未引用的文件流并运行其终结器,从而有效地关闭它。您可能可以通过调用
GC.Collect
来模拟这一点,而无需分配数组。尝试分配较小的数组,然后调用
GC.Collect()行为可能是相同的。通过分配一个大数组,您强制GC介入。这将清除未引用的文件流并运行其终结器,从而有效地关闭它。您可能可以通过调用
GC.Collect
来模拟这一点,而无需分配数组。尝试分配较小的数组,然后调用
GC.Collect()行为可能相同。