我有一个List定义如下:
List<Tuple<string, long, DateTime>> firefoxBookmarkPaths = new List<Tuple<string, long, DateTime>>();
Run Code Online (Sandbox Code Playgroud)
但是我在添加到我的列表时遇到问题:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
该行firefoxBookmarkPaths.Add(bookmarkFile, fileSize, fileModifiedDate);抛出错误"没有重载方法'添加'需要3个参数." 如何在此列表中添加元素?
你没有用元组调用.Add(),你用三个参数调用.Add(),它没有重载方法(如错误信息所示).相反,你需要做这样的事情:
firefoxBookmarkPaths.Add(Tuple.Create(bookmarkFile, fileSize, fileModifiedDate));
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是C#7.0,则可以使用一些语法糖:
firefoxBookmarkPaths.Add((bookmarkFile, fileSize, fileModifiedDate));
Run Code Online (Sandbox Code Playgroud)
编辑
正如下面的评论所指出的,这不是语法糖,而是一种不同的类型.虽然如果你使用C#7.0,使用不同的类型也会很好.