更新文件更改的数据
本文关键字:数据 文件 更新 | 更新日期: 2023-09-27 18:31:24
public DataUpdater(string file, ref DataTable data)
{
FileSystemWatcher fileWatcher = new FileSystemWatcher();
fileWatcher.Path = Path.GetDirectoryName(file);
fileWatcher.Filter = Path.GetFileName(file);
fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
fileWatcher.Changed += (sender, e) =>
{
data = CSVParser.ParseCSV(file);
};
}
您好,我正在尝试在文件更改时更新数据表变量,但输出显示我无法在更改的事件中具有 ref 或 out。 请帮忙
好的,
您正在尝试的内容看起来是一个合理的想法,但您无法在 lambda 中设置值以ref
参数。为什么?好吧,只要方法运行,ref
参数就赋予您访问提供的变量的权限。由于实际上无法知道lambda何时运行,因此不允许写入其中的此变量 - 这将是对该变量进行无限制写入访问的后门。
可能的解决方案:
将DataUpdater
的签名更改为可以永久访问您的DataTable
的内容。
public DataUpdater(string file, Action<DataTable> setter);
通过 new DataUpdater(..., x => targetTable = x)
调用此构造函数并将 lambda 中的行更改为 setter(CSVParser...);
我希望这是有道理的;)