System.IO.File没有构造函数。而是使用Create / Open静态方法。
为什么没有使用构造函数创建或打开文件?
调用构造函数是否暗示调用构造函数的代码"拥有"对象并不是一个类似文件的情况,其中对象只是将句柄包装到文件系统所拥有的文件中?这是一些OOP约定,.NET / C#约定,还是纯粹是任意的?
答案 0 :(得分:9)
File.Create
和Open
实际上没有实例化File
,它们会返回一个新的FileStream
来访问磁盘上文件中的数据。
它们基本上是FileStream Constructors的工厂方法, 作为FileStream
个实例的构造函数进行处理。
答案 1 :(得分:9)
File类是.NET Framework 1.0版的后期添加。在微软进行可用性研究后添加。他们邀请以前从未使用过.NET的程序员,并要求他们编写使用FileStream和StreamWriter类的代码。那些有构造函数的。成功率零。
所以他们想出了File,它有一堆静态帮助方法来创建/打开文件。将它们视为工厂方法。不,你不会创建一个文件。你用吧。查看您最喜欢的关于静态类的C#编程语言书。
答案 2 :(得分:1)
File
只是为您实例化其他类的辅助类。 “文件”本身是文件系统上的对象,而不是.NET。所以你有流,读者,FileInfo
等,它们都代表了与文件交互的不同方面。 .NET中的File
类只是通往所有这些不同类的网关。