所以我有一个静态类,其列表被声明为其中一个成员,我在一个函数中填充列表,让我们说它叫做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
}
}
答案 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
}
}