已将元素添加到列表<元组>

时间:2018-06-29 19:16:30

标签: c# .net

我的列表定义如下:

List<Tuple<string, long, DateTime>> firefoxBookmarkPaths = new List<Tuple<string, long, DateTime>>();

但是我无法添加到列表中

List<Tuple<string, long, DateTime>> firefoxBookmarkPaths = new List<Tuple<string, long, DateTime>>();

long fileSize = 0;
string bookmarkFile = null;
string directoryToCheck = null;
DateTime fileModifiedDate = DateTime.MinValue;

foreach (var dir in basePersistDirectories)
{
    directoryToCheck = dir + @"\C\Users" + @"\" + Environment.UserName + @"\" + @"AppData\Roaming\Mozilla\Firefox\Profiles";
    if (Directory.Exists(directoryToCheck))
    {
        var subDirectories = Directory.GetDirectories(directoryToCheck);
        foreach (var directory in subDirectories)
        {
            bookmarkFile = directory + @"\places.sqlite";

            if (File.Exists(bookmarkFile))
            {
                fileSize = new FileInfo(bookmarkFile).Length;
                fileModifiedDate = new FileInfo(bookmarkFile).LastWriteTimeUtc;
            }
        }

        firefoxBookmarkPaths.Add(bookmarkFile, fileSize, fileModifiedDate);
    }
}

firefoxBookmarkPaths.Add(bookmarkFile, fileSize, fileModifiedDate);引发错误“方法'Add'的重载不接受3个参数。”如何将元素添加到此列表中?

2 个答案:

答案 0 :(得分:5)

您不是在用元组调用.Add(),而是在用三个参数调用.Add(),这三个参数没有重载方法(错误消息告诉您)。相反,您需要执行以下操作:

firefoxBookmarkPaths.Add(Tuple.Create(bookmarkFile, fileSize, fileModifiedDate));

或者,如果您使用的是C#7.0,则可以使用一些语法糖:

firefoxBookmarkPaths.Add((bookmarkFile, fileSize, fileModifiedDate));

修改

正如下面的评论中指出的那样,这不是语法糖,而是另一种类型。尽管如果您使用的是C#7.0,那么使用其他类型也可以。

答案 1 :(得分:2)

List<T>Add方法在您尝试添加内容时需要T值。
所以你的行应该是

firefoxBookmarkPaths.Add(new Tuple<string, long, DateTime>
                     (bookmarkFile, fileSize, fileModifiedDate));