簡體   English   中英

帶Enum的C#Static類

[英]C# Static class with Enum

我有一個棘手的問題,一直困擾着我。 我有以下代碼聲明......

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

我調用這樣的代碼“ ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS ”問題是每次滿月時我得到錯誤“對象引用沒有設置為對象的實例”這一行......就像代碼只能工作99.9%的時間...

我發現的唯一事情是,因為枚舉是一個值類型,當調用靜態類時,枚舉可能有空......但我找不到有關此行為的任何文檔...

有人可以告訴我為什么會這樣嗎? 我知道我應該從靜態類中刪除枚舉,並將枚舉聲明為獨立但我想知道為什么這首先發生...

謝謝,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;
    }

無論月亮是什么樣的, ParameterUtilities.ParameterEnum.MAX_LOGIN_ATTEMPTS都不會拋出空引用異常。 錯誤可能是由同一行上的其他指令觸發的(賦值給變量?)。

enum不能為null

將該行拆分為下面的清單,並查看哪個語句拋出異常。 我打賭它發生在Parameter.GetParameter()某個地方:

using ESEGURCI.WEB.BusinessLogicLayer.Entities;

// ...

var auditModifications = 
    ParameterUtilities.ParameterEnum.AUDIT_MODIFICATIONS.ToString();
var parameter = Parameter.GetParameter(auditModifications, companyId);

枚舉(和任何其他類型)不能具有空值,因為它不是值,它是一種類型。

其他東西拋出異常。

如前所述,您的enum不會出現錯誤。 根據您的更新,我會說NRE最有可能來自您的GetParameter方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM