我有OpenFileDialog
的应用程序,并且我不想每次用户想要添加文件时都使用OpenFileDialog
新实例(使用Winforms
可以在设计器中完成)。
所以将OpenFileDialog
定义为Static class
或也许Singleton
是个好主意吗
编辑
public static class OpenFileDialogCreation
{
public static OpenFileDialog openFileDialog;
public static void CreateDialog()
{
openFileDialog = new OpenFileDialog();
openFileDialog.Title = "Select File(s)";
openFileDialog.Filter = "*.doc|*.doc";
openFileDialog.Multiselect = true;
}
}
最佳答案
OpenFileDialog是一个小类。围绕非托管Windows api的微型.NET包装器类。仅当您调用ShowDialog()时才会发生繁重的事情,而在关闭对话框时便会消失。它的Winforms版本是可抛弃的(不是WPF版本),但这仅是因为它从Component继承了Dispose()。它什么也没做。
唯一值得注意的内存使用情况是string [],用于存储所选文件,即FileNames属性的后备存储。通常只有一个,并且您只会使用FileName,从技术上讲,它可以是数千个。超过兆字节的情况非常罕见。
因此,静态不是一个严重的问题。还是可取的。不要忽略使用工厂方法的选项:
public static OpenFileDialog CreateDialog(string initialDir = null) {
var dlg = new OpenFileDialog();
dlg.Title = "Select Word documents";
dlg.Filter = "Word documents (*.doc,*.docx)|*.doc;*.docx";
dlg.DefaultExt = ".doc";
dlg.Multiselect = true;
if (initialDir != null) dlg.InitialDirectory = initialDir;
return dlg;
}
关于c# - 将OpenFileDialog定义为静态类是个好主意吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33773139/