-1

所以我有一个静态类,其中一个列表声明为它的成员之一,我在一个函数中填充列表,假设它被称为 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
          }
       }
4

2 回答 2

2

您可以使用静态构造函数或静态初始化。它将允许您保留您的 class 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
}
于 2013-07-16T15:55:06.217 回答
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
          }
       }
于 2013-07-16T15:56:48.363 回答