从方法中添加到列表

时间:2015-10-02 19:25:42

标签: c# asp.net

我是Asp.net和C#的新手,我正在尝试记录对目录所做的更改。我遇到的问题是,从我的方法中获取对目录所做的更改,我无法将信息(以字符串的形式)添加到列表,列表框或方法之外的任何内容。

以下是获取目录更改的方法:

protected void OnChanged(object sender, FileSystemEventArgs e)
{

    if (!m_bDirty)
    {

        m_Sb.Clear();

        m_Sb.Append(e.FullPath);
        m_Sb.Append(" ");
        m_Sb.Append(e.ChangeType.ToString());
        m_Sb.Append("    ");
        m_Sb.Append(DateTime.Now.ToString());
        m_bDirty = true;
        test.Add(m_Sb.ToString());

以下是方法之外的变量:

public partial class _Default : System.Web.UI.Page
{
private System.IO.FileSystemWatcher watcher;
private bool m_bDirty;
private StringBuilder m_Sb = new StringBuilder();
private List<String> test = new List<String>();

我的问题是,当我尝试从OnChanged方法之外的列表(测试)中提取信息时,那里什么都没有。

1 个答案:

答案 0 :(得分:3)

每当页面上发生回发时,您的列表测试将重新初始化为新列表,这将清除它可能拥有的任何数据。

您可以将其声明为静态字段,然后在页面

中初始化它
private static List<string> test;

protected void Page_Init(object sender, EventArgs e) {
    test = test ?? new List<string>();
    // ... additional initalization
}

然后,您可以通过其他方法处理后将其设置为空来清除列表。