更新文件更改数据?

时间:2013-09-14 23:53:20

标签: c# .net

    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。请帮忙

1 个答案:

答案 0 :(得分:1)

好的,你正在尝试看起来是一个合理的想法,你不能从lambdas中设置ref参数的值。为什么?好吧,只要方法运行,ref参数就可以让您访问提供的变量。事实上,由于无法知道lambda何时运行,因此不允许在其中写入此变量 - 这将是对该变量进行无限写入访问的后门。

可能的解决方案:

DataUpdater的签名更改为可永久访问DataTable的内容。

public DataUpdater(string file, Action<DataTable> setter);

通过new DataUpdater(..., x => targetTable = x)调用此构造函数,并将lambda中的行更改为setter(CSVParser...);

我希望这是有道理的;)