使用静态类中另一个方法的列表

时间:2013-07-16 15:51:10

标签: c# list nullreferenceexception

所以我有一个静态类,其列表被声明为其中一个成员,我在一个函数中填充列表,让我们说它叫做PopulateList()。是否可以在没有:

的情况下修改另一个函数中的列表

1)将其作为参数调用 2)在构造函数中实例化它(尝试保持类静态。我正在使用模板,所以我无法真正改变类的结构)

虽然没有以某种方式实例化,但我显然会收到空异常,所以我想知道是否有第三种方法可以做到这一点。

       public Static class MyClass{

             static public List<String> m_SuiteFileNameList2=null;


        public static bool Function1(inp){
              //m_SuiteFileNameList2 stuff
         }

        public static void Function2(){
             //m_SuiteFileNameList2 other stuff
          }
       }

2 个答案:

答案 0 :(得分:2)

您可以使用static constructor或静态初始化。它将允许您保留您的班级static,但将确保始终定义列表:

static class MyClass
{
    static MyClass()
    {
        MyList = new List<Whatever>();
    }

    // etc
}

static class MyClass
{
    public static List<Whatever> MyList = new List<Whatever>();
}

另一个选择是为列表的每个用法添加null检查:

public static void MyMethod()
{
    if (MyList == null)
    {
        MyList = new List<Whatever>();
    }
    //etc
}

答案 1 :(得分:1)

我会调用一个名为'Initialize'的函数,它是静态的,负责你的静态成员。

虽然如果可能的话我会建议不要使用静态成员。

为什么?

代码段

public static class YourClass
{
    public static List<string> YourList;

    public static void InitializeList()
    {
        YourList = new List<string>();
        YourList.Add("hello");
        YourList.Add("how");
        YourList.Add("are");
        YourList.Add("you?");
    }
}

从外部调用Initialize-Function:

 YourClass.InitializeList();

编辑:鉴于您的代码,您也可以这样做:

  public Static class MyClass{

             static public List<String> m_SuiteFileNameList2=null;


        public static bool Function1(inp){
             if(m_SuiteFileNameList2 == null)
             { m_SuiteFileNameList2 = new List<String>();}
              //m_SuiteFileNameList2 stuff
         }

        public static void Function2(){
             if(m_SuiteFileNameList2 == null)
             { m_SuiteFileNameList2 = new List<String>();}
             //m_SuiteFileNameList2 other stuff
          }
       }
相关问题