У меня есть функция, рекурсивная на C#, которую я хочу редактировать глобальную переменную (предположим, что она глобальна из-за публики до нее), объявленной вне функции. По какой-то причине я не знаю, что она не может видеть общедоступную переменную внутри этой конкретной функции. Он может видеть это в первой функции в моем коде, но не во втором, где мне нужно получить к нему доступ и изменить его, чтобы сэкономить много времени, открыв много файлов ...Открытая переменная в рекурсивной функции C#
Есть ли причина, по которой это не было бы доступно? и если да, то как я могу обойти это?
Большое спасибо!
public int[] timeInfo = new int[2];
private void ListDirectory(TreeView treeView, string path)
{
treeView.Nodes.Clear();
var rootDirectoryInfo = new DirectoryInfo(path);
treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}
private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
var directoryNode = new TreeNode(directoryInfo.Name);
foreach (var directory in directoryInfo.GetDirectories())
directoryNode.Nodes.Add(CreateDirectoryNode(directory));
foreach (var file in directoryInfo.GetFiles())
{
int check =0;
try
{
string s = "";
s = directoryInfo.FullName + "\\" + file.Name;
List<string> row, row2, row3 = new List<string>();
using (StreamReader readFile = new StreamReader(s))
{
row = (readFile.ReadLine().Split(',').ToList());
try
{
row2 = (readFile.ReadLine().Split(',').ToList());
//timeInfo[0] = row2[0];
}
catch { check = 1; }
try
{
row3 = (readFile.ReadLine().Split(',').ToList());
//timeInfo[1] = row3[0];
}
catch { }
}
TreeNode[] headerNodes = new TreeNode[row.Count];
for (int i = 0; i < row.Count; i++)
{
headerNodes[i] = new TreeNode(row[i]);
if (check == 1)
{
headerNodes[i].BackColor = Color.Red;
headerNodes[i].ForeColor = Color.White;
}
}
directoryNode.Nodes.Add(new TreeNode(file.Name, headerNodes));
}
catch
{
directoryNode.Nodes.Add(new TreeNode(file.Name));
}
}
return directoryNode;
}
Что именно вы собираетесь делать с 'timeInfo []', поскольку каждый рекурсивный вызов перезапишет значения –