2

しばらく頭を悩ませているトリッキーな質問があります。次のコード宣言があります...

namespace ESEGURCI.WEB.BusinessLogicLayer.Commons
{
    public static class ParameterUtilities
    {
        public enum ParameterEnum
        {
            MAX_LOGIN_ATTEMPTS,
            AUDIT_MODIFICATIONS
        }
    }
}

そして、私はそのようにコードを呼び出します " ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS "問題は、満月ごとに1回、この行に「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されることです...コードが99.9%しか機能しないようです当時の...

私に起こる唯一のことは、列挙型は値型であるため、静的クラスが呼び出されたときに列挙型が null になる可能性があるということです...しかし、この動作に関するドキュメントが見つかりません...

誰かがなぜこれが起こるのか教えてもらえますか? おそらく静的クラスから列挙型を削除し、列挙型をスタンドアロンとして宣言する必要があることはわかっていますが、なぜこれが最初に起こっているのか知りたいです...

ありがとう、S

アップデート

わかりました、より多くのコードを求めたすべての人に、以下はエラーが発生する完全な機能です...

    public static int GetPageSize(int companyId)
    {
        int pageSize = 0;

        // error happens bellow this line

        ESEGURCI.WEB.BusinessLogicLayer.Entities.Parameter parameter = ESEGURCI.WEB.BusinessLogicLayer.Entities.Parameter.GetParameter(ParameterUtilities.ParameterEnum.AUDIT_MODIFICATIONS.ToString(), companyId);

        // error happens above this line

        int.TryParse(parameter.Value, out pageSize);

        return pageSize;
    }
4

4 に答える 4

7

ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS月がどのように見えても、null参照例外をスローすることはありません。エラーは、おそらく同じ行の他の命令(変数への割り当て?)によって引き起こされます。

于 2012-09-04T10:58:01.157 に答える
2

するenumことはできませんnull

以下のリストのように行を分割し、どのステートメントが例外をスローするかを確認します。私はそれがどこかで起こるに違いないParameter.GetParameter():

using ESEGURCI.WEB.BusinessLogicLayer.Entities;

// ...

var auditModifications = 
    ParameterUtilities.ParameterEnum.AUDIT_MODIFICATIONS.ToString();
var parameter = Parameter.GetParameter(auditModifications, companyId);
于 2012-09-04T11:28:17.403 に答える
1

列挙型 (およびその他の型) は、値ではなく型であるため、null 値を持つことはできません。

例外は別のものによってスローされます。

于 2012-09-04T10:58:45.413 に答える
1

すでに述べたように、あなたenumはエラーの原因ではありません。あなたの更新に基づいて、NREはあなたのGetParameter方法から来ている可能性が最も高いと思います.

于 2012-09-04T11:26:55.320 に答える