我的列表定义如下:
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个参数。”如何将元素添加到此列表中?
答案 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));