我已经编写了一些代码来将任何IEnumerable集合输出到文件中,但是无法将字典传递给它。我现在正在尝试将字典(可能是int
,int
或int
,string
或任何其他组合)转换为数组,以便我可以执行此操作。当我尝试将其传递给需要IEnumerable的方法时,下面的代码表示错误。
泛型是我没有做过多少事情,所以也许我做错了。
public static bool DictionaryToFile<T, U>(Dictionary<T, U> TheDictionary, string FilePath) { long count = 0; string[,] myArray = new string[2,TheDictionary.Count]; foreach (var current in TheDictionary) { myArray[0, count] = current.Key.ToString(); myArray[1, count] = current.Value.ToString(); } // error appears here TypedListToFile<string[,]>(myArray, FilePath); return true; }
//我正在打电话的另一个人:
public static bool TypedListToFile<T>(IEnumerable<T> TypedList, string FilePath)
{
答案 0 :(得分:0)
TypedListToFile<string[,]>(myArray, FilePath);
myArray的类型不是IEnumerable<string[,]>
,因此myArray不能是此方法的第一个参数。
答案 1 :(得分:0)
这实际上取决于你要做什么:当你读到:Why do C# Multidimensional arrays not implement IEnumerable<T>?你会发现多维数组没有实现IEnumerable,所以你必须先转换它。然而,你的代码没有意义。我假设您需要在循环中增加计数?
现在至于解决方案:您可以通过在其上应用linq查询来模拟VB行为,该行为自动将>多维数组转换为枚举。像:
var arrayEnumerable = from entry in myArray select entry;
// and some proof that this works:
foreach (string entry in arrayEnumerable)
{
// this will succesfully loop your array from left to right and top to bottom
}