更新文件更改的数据

本文关键字:数据 文件 更新 | 更新日期: 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...);

我希望这是有道理的;)