-1

だから私はそのメンバーの1つとして宣言されたリストを持つ静的クラスを持っています.PopulateList()と呼ばれる関数でリストを作成します. 次を使用せずに別の関数でリストを変更することは可能ですか?

1)パラメーターとして呼び出す 2)コンストラクターでインスタンス化する(クラスを静的に保とうとしています。テンプレートを使用しているので、クラスの構造を実際に変更することはできません)

どういうわけかインスタンス化せずに、明らかにnull例外を受け取るので、これを行う3番目の方法があるかどうか疑問に思っていました.

       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

静的コンストラクターまたは静的初期化のいずれかを使用できます。クラスを保持できますが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

静的で静的メンバーを処理する「初期化」という関数を呼び出します。

可能であれば、静的メンバーに対してお勧めしますが。

なんで?

コードスニペット

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 に答える